
本期讨论的Boss是失落近亲(Lost Kin),如有别的问题请在评论区留言。
视频BV1kK411k7Cg中提到的专栏目前似乎被删除了,并且该视频中讲解的部分原理存在一定问题,本期会对其进行补充与修正。
本期解决的主要问题为:
1. 后撤与挥砍的触发逻辑。(2.1)
2. 失落近亲的大跳逻辑与“因果律”大跳的补充。(2.2.1)
3. 冲刺判定的程式化缺陷。(2.2.3)
4. 为什么有时受击后攻击会很早?(2.3)
5. 气球的生成逻辑详解。(3.1)
6. 硬直滑动是bug么?怎么引起的?能否稳定触发?(3.2)
本篇文章分为以下三个部分:
1. 基础信息
2. 失落近亲攻击模式
3. 气球的生成逻辑
失落近亲,调谐血量1200,进升/辐辉级血量1650;血量小于或等于1150时,开始召唤气球。
最小击退间隔:0.15s
击退基速度:15
重力加速度:3.25
连击硬直数:7
有效连击判定间隔:2s
受击硬直数:13
硬直时间:3s
攻击碰撞箱大小:宽1.7458,高1.8229
硬直碰撞箱大小:宽1.2944,高1.4268

注:硬直时如果贴身前太近将他打起来(或者自然起身),是会被撞到的,这是因为上图中,可以明显看到硬直碰撞箱靠后,而本体碰撞箱靠前,虽然击打会造成击退,但是贴太近无法将其击退至玩家碰撞箱外,因此会受伤;自然起身更不能贴身前太近,因为没有击退会导致其实际起身后,站得位置更加靠前。尤其是墙角,由于受到墙壁的限制,击退也没办法将其打远,站太近很容易起身就是一个贴贴。
受伤实例:
贴太近自然起身

贴太近打起身


打开debug碰撞箱显示(2次)后,可以看到如下非常复杂的各种触发器,我们实际只需要关注下图标注的几个有用的框体,具体用处会在第二部分给出。
需要注意的是,冲刺判定区实际上是不起到任何作用的,虽然从逻辑上玩家不处于冲刺判定区时,失落近亲不会冲刺,但实际上这部分的判定被tc禁用了,因此冲刺判定区并不会起到任何作用。图中省略了一个比较大的框体,代码中叫做rewake range,这是用于判断战斗开始的区域,因此也不需要关注。


基本出招循环:
闲置准备——>闲置状态(判断是否后撤,是否挥砍)——>攻击选择——>攻击——>闲置准备
开局第一次攻击前,失落近亲默认的闲置时间为0.75s,而且不会触发后撤或者挥砍;经过一轮攻击后,再次回到闲置准备环节时,闲置状态持续时间将在0.5-0.75s内随机,并且会有45%的几率判定一次可以后撤(Will Evade设为真),注意这不代表一定会后撤;有25%的几率判定一次可以挥砍(Will Ohead设为真),这也不代表一定会挥砍。
进入闲置状态后,先转向面对玩家,并且在0.5-1.25之间随机一个数作为“走路”速度,即梦表在地上缓慢爬一会儿,向左或者向右走路同样随机,概率各一半。
在闲置状态持续时间结束之前,如果前面判定了可以后撤,并且玩家处于上面的后撤判定区域内,那么就会触发“后撤”事件。
进一步,会检测梦表是否有足够的空间后撤,即判断“后撤墙壁检测区”是否触墙,如果不触墙,则成功判定后撤,并再次返回闲置准备环节,也就是说,表哥实际上有概率会连续后撤。如果触墙,则后撤失败,转而判定一次随机跳跃(放在后面讲解),并返回闲置准备状态。
对于挥砍,只需要在闲置状态下进入挥砍判定区,并且前面判定了可以挥砍,则表哥就会触发挥砍,左右进行四次挥砍,正面挥砍范围会更大一些,背面更小。
闲置状态结束后,失落近亲会进入攻击选择环节,一共只有三个出招:下砸,随机跳跃,以及冲刺。给出下表参考:

2.1 下砸与“因果律”大跳
前面的视频中所提到的“大跳一般是一次失败的下砸”是正确的。
下砸的起跳不是锁定一个预瞄点,只是根据玩家与梦表之间的距离决定跳跃的水平速度,距离越远速度越快,而水平速度=水平距离*2.5。而竖直初速度为60。水平速度不变,而竖直方向仅受到重力的影响,因此表哥的起跳路线一定是一个抛物线,并且由于竖直速度恒定,因此所有起跳的最大高度都是固定的,只是根据水平速度的不同,抛物线的跨度不同,而高度相同。
在跳跃过程中,会每帧获取梦表的y轴坐标,当其位置高于33.31,并且玩家处于下砸判定区内时,就会成功判定一次下砸。砸地后释放橙汁,左右各三坨。
下砸高度线:

而如果在起跳环节玩家始终无法在表哥高度足够时位于下砸判定区内,则其就会下砸失败,从而变成一次大跳。注意,整个跳跃持续的时间大致为37帧,也就是0.6s左右,因此实际上是非常快的,所以与梦表“同向位移”就很容易引起跳脸,也就是“因果律”大跳,而对于受因果律大跳困扰的朋友们,只需要与梦表“双向奔赴”式躲避,就可以避免这种情况的发生。具体请见专栏开篇的视频,也可以参考下图:

梦表跳跃可达到的最大高度为36.4左右,并且一般位于玩家与表哥初始靠近玩家一侧的23%左右的位置,而落点一般在与玩家初始位置距离54%左右的位置,由于梦表本身碰撞箱的大小,导致反向移动后大概率处于落点附近,从而直接跳脸。
这里的反向移动无论是走路还是冲刺实际上都会存在这种风险,因为两者移动的距离都是在受伤范围内波动的。
受伤实例:
同向走路受伤

同向冲刺受伤

2.2 随机跳跃
一般情况下,失落近亲的跳跃不会是上述“速度极快”的大跳,而是随机跳跃。随机跳跃最大的不同在于初始水平速度随机性比较强,在16.06-36.53中随机选取一个坐标,获取该坐标与表哥之间的水平距离,乘以1.25作为初始速度。Y轴速度依然是60,因此跳跃的最大高度同下砸的跳跃一样。
由于随机性,导致有时候也会出现锁定距离很远,从而出现一次“大跳”,这个就比较随机了,但是由于乘上的系数较小,一般情况下可以反应过来。
前面提到失败的后撤会变成一次随机跳跃,逻辑也是相同的。
2.3 冲刺
判定冲刺后,理论上会先进行一次“冲刺范围检测”,即玩家需要在前文给出图中的冲刺判定区内,才能成功进行一次冲刺,否则,如果不在范围内,冲刺就会变成一次下砸。
然而事实上,对于速通玩家而言,尤其是满配,可以发现开局如果去左墙角放吸虫等等,此时玩家必然会在冲刺判定区之外,因此失落近亲理论上只可能发生下砸或者随机跳,而不会进行冲刺;但实际上,其仍然有可能进行冲刺。
这个问题同样也是tc设计的问题,应该算是bug。虽然冲刺检测是失落近亲逻辑中的一环,但是,实际游戏过程中,该检测被禁用了,因此无论玩家是否处于冲刺范围内,都不妨碍梦表进行冲刺。这也会导致很多时候就算梦表离得很远,也会进行冲刺,尽管碰不到玩家。
随后会进行一次空中冲刺的判定,有30%的几率,该次冲刺会变成空中冲刺;剩下70%几率即原地冲刺。空中冲刺时,表哥会进行跳跃,到达31.5的高度时正式蓄力冲刺,最后受重力影响落地。
部分玩家会注意到,如果梦表跳跃或冲刺后攻击他,可能导致立即触发其下一次攻击,对于无伤玩家而言,这种情况可能导致黑冲cd没好,而场上有气球导致受伤风险大大提升。
实际上,梦表是具有受击反击机制的。
在闲置状态中,我们知道该状态会维持0.5-0.75s。而如果在该过程中攻击失落近亲,就会触发受击反击,这将跳出闲置状态,并在下列四种出招中进行随机:

一般情况下,由于闲置时间太短,其实也很难保证每次就一定在该范围内攻击到表哥,加上只有50%的几率表哥会进行攻击行为,即随机跳跃或冲刺;同时就算在该范围内攻击梦表,实际上一般也有不小的概率可以恢复黑冲cd。
只有在闲置状态开始后0.2-0.3s内攻击梦表,并且其出招刚好很糟糕,而自身黑冲cd没好时,才会比较有威胁性。
同时,下砸后就算很快进行攻击一般也不会出现问题,这是因为下砸后,表哥还有0.35s的后摇,因此风险很低;而随机跳跃或者冲刺后摇几乎没有,因此比较麻烦。冲刺因为距离拉得较远,因此一般也无法很早出手攻击,只有随机跳跃,攻击频率过高时比较容易出事。
血量小于或等于1150后,失落近亲开始召唤气球,由于调谐级血量只有1200,因此开局随便打几下就会开始召唤,而进升/辐辉1650血需要先打掉500血,因此召唤气球较晚。场上最多同时存在6个气球,每个气球的生成间隔在2-3s内随机,而由于失落近亲血量较厚,因此战斗全程召唤的气球数量会非常多。
所有气球生成的逻辑实际上都是完全相同的,这里针对有翼的做详细补充说明。
气球的生成范围是左17.36至右36.46,和下32.16与上37.42之间随机,并且延迟0.1s生成。不同气球的速度也不同,因为其追踪速度是在3.5-6.5内随机,而追踪过程与马尔穆,加利安的锤子相同,因此气球实际是有快有慢的。
范围如下:

每个气球生成的大小不一样,是在一定范围内随机的,打开debug碰撞箱可以看到由如下5个部分组成,从外到内依次为:玩家保护区,推动碰撞箱,墙壁检测区,圆形碰撞箱与矩形碰撞箱。这五个碰撞箱的大小根据气球大小不同按比例变化,我们会逐一解释。


玩家保护区即保证气球不会刷脸,当玩家处于这个大圈内时,气球并不会立即刷新,而是会等待玩家离开这个范围,然后再生成。这里可能就有人会问:为啥有时起跳时刷新的位置很近呢?因为0.1s的延迟生成,加上如果最开始刚好处于保护区外侧,导致气球可以成功生成,但是一旦往生成点跳跃,就很有可能在生成时近乎贴脸,对于更小的气球往往更容易出现,因为小气球的保护区也会相应更小,因此更容易生成。


墙面检测区就是保证碰撞时不会出现bug,加上的一层保险,防止卡墙。实体碰撞箱一共有两个,分为一个圆形和一个矩形,具体为什么要区分两个不明,但都能造成伤害,这点需要注意。
这里重点来聊一聊推动碰撞箱(Enemy Pusher)。
气球与气球之间是有相互推动作用防止叠在一起的,这就是由于推动碰撞箱的作用。这一碰撞体的逻辑,是会让同样具有该碰撞体的根对象相同的物体发生碰撞,而根对象不同的物体不发生碰撞。
之前在有翼篇提到了,已生成的气球,当其推动碰撞箱撞到另一个未生成的气球(即玩家处于保护区内导致气球无法成功生成),会推动这个气球的碰撞箱运动,这会导致原来未生成的气球逐步远离玩家,从而生成。因此有翼或梦表刻意去留存气球实际上也是一种不稳定的做法,即便有一个气球在玩家附近,但是一旦被别的生成的气球碰撞,依然会导致其远离后生成。这是一个没有太大用处的冷知识,演示如下:
一个

多个

而梦表由于不具备这个碰撞体,因此,气球的生成逻辑中加上了一条:忽略与梦表的碰撞,因此,正常战斗环节中,表哥并不会与气球发生相互挤压或者碰撞的作用,而是会互相穿透。由于设计的bug,虽然表哥正常情况下会穿透气球,但是硬直过程中,每个气球可以对梦表造成一次有效推动,并且由于气球速度一般不同,会导致推动后的速度也不同。
这其实就回答了为什么梦表有时硬直时会“滑行”,本质上与特定出招后打出硬直无关,只是因为硬直时被气球顶了一下。一般情况下,由于气球都是一刀死,因此大部分时候无法成功触发这个bug,加上梦表硬直在地上,而气球生成位置更高,想碰到也不容易。但是如果刻意去触发也是可以稳定触发的,只需要勾引任一气球撞向硬直的梦表,就一定可以造成有且仅有一次有效推动,导致滑行;两三只气球碰上去就会发生多次碰撞,虽然这个概率非常低,正常打很难在硬直的3s内让两个气球相继撞到梦表。
触发实例

一个气球不可多次触发

以上就是本期行为分析的全部内容了,感谢各位的耐心阅读,整理了一些征问的问题与自己想到的疑惑,有问题在评论区留言,我们下期再见。