我正在制作玩家角色的连击动作,但遇到了困难。
我的构想是类似某款史克威尔(Square Enix)游戏的攻击按钮连打机制:当攻击命中时,招式会发生变化。但我理想的实现方式是格斗游戏中那种通过取消(cancel)来衔接招式的机制。
在 Visual Studio (VS) 中,当对敌人攻击命中时,我在玩家端进行了条件分支判断,但无论如何都会进入待机状态的分支,无法过渡到下一个攻击动作。请问应该如何设置链接,才能使其分支到下一个攻击动作?
此外,即使实现了上述分支,我也希望像格斗游戏的取消技那样:在命中停顿(hit stop)期间,一旦按下攻击按钮的瞬间,跳过返回待机的动画(每个攻击动作都有各自的返回动画),直接过渡到执行下一个攻击判定的状态。
目前,关于返回待机的条件,我尝试通过“输入相关条件”将攻击按钮设置为“松开”,并结合“动画结束”来进行过渡。
另外,未来我希望从任何招式都能进一步分支,实现如冲刺或必杀技等动作。请问在状态(State)和链接(Link)方面,应如何区分条件,才能实现流畅的分支?
拜托各位了。
您能展示从 G_attack1(2) 到 G_attack2 的链接内容吗?
(看起来满足前往待机状态的条件的情况似乎先发生了。)
如果您想查看两者的条件,
通过提高优先级,可能会发生状态转移。
感谢您的观看。优先级方面,攻击侧全部设为0,待机返回状态全部设为1。
请多关照。
首先,我想先检查一下是否可以简单地实现状态转换。
转向 G_attack1(2) 的条件
· 将优先级改为 1(从待机状态提升)
转向待机状态的条件
· 仅保留“动画结束后”这一条件(暂时删除“未接触攻击”的条件)
· 将优先级改为 0
上述情况下,状态转换是否正确?
作为下一步,虽然我没有查看项目,但根据推测,原因可能如下:
原因推测①
G_attack1 的动画播放过快,在按下攻击按钮之前就已经返回了待机状态。
※检查方法
将 G_attack1 的动画时长延长至约 5 秒,然后从容地按下下一个攻击按钮进行测试。
原因推测②
攻击判定未命中敌人,导致条件未满足。
※检查方法
检查敌人的判定范围以及自身的攻击判定范围。
原因推测③
“物体的碰撞判定与接触”和“按下按钮的瞬间”都只持续一瞬间,导致状态转换条件过于严格。
※检查方法
尝试将条件改为“攻击按钮被按住”。
能否请您确认以上几点?
感谢您的反馈,我已尝试了以下变更及原因推测①:
针对 G_attack1(2) 的条件:
- 将优先级改为 1
针对待机状态的条件:
- 暂时删除“攻击接触≠”
- 将优先级改为 0
原因推测①:
G_attack1 的动画播放过快,在按下攻击按钮前已返回待机状态。
※检查方法:
将 G_attack1 的动画时长延长至约 5 秒,然后从容地按下下一个攻击按钮。
(由于 5 秒检查较为繁琐,已改为 1 秒)
结果发现,攻击技能被完整释放且全部命中,但在多次测试中出现了非预期的行为:
G_attack1 本应出现两次,却只出现了一次,导致第二次攻击状态被忽略,直接进入第三次攻击状态,甚至触发了第四次攻击状态的逻辑。
在此状态下,由于当前第一次攻击的动画速度较快,似乎更容易出现“第一次攻击→第三次攻击”的重复循环。当敌人因此进入两次伤害状态后,敌人无法从伤害震动动画中恢复。
若放置一段时间,敌人会倒下并重新站起,随后按预期进入待机状态。
请问,G_attack1(2) 本该出现两次却未出现,是否是因为 G_attack1 的动画被重复使用了?
关于敌人伤害固定的问题,自 Moonling 先生日前告知的“命中停止”方法以来,我未做任何额外修改。
是否需要我发送项目文件?
敬请指导。
如果可以提供该项目,我将进行确认。能否在合适的时机和方式下分享?
pgmmv-support@gotchagotcha.jp
日前我们曾通知您向此处发送项目,本次是否也可以将ZIP文件发送至此处?
1 个赞
明白了,如果有指定,请将其发送至该处,我们可以进行回收。 谢谢。
收到。
已将ZIP文件发送至pgmmv-support@gotchagotcha.jp。
请查收。
1 个赞
※此事可能存在Bug,已报告给工程师。
■症状
即使动画播放过程中满足转移条件,
如果转移目标节点的动画与源节点相同,
似乎必须等待动画播放完毕才能转移。
①拳击→②拳击→③直拳→④后空翻
的情况下,在①和②中设置不同的动画(复制并设为独立对象),
似乎可以满足条件。
给您添麻烦了,
目前能否先使用上述规避方案进行测试?
Hiro_T
11
感谢您的回复
>①和②中设置了不同的动画(复制并制作成不同的版本)
我们已在此处进行处理,但结果变成了①拳击、③直拳、④后空翻,②仍然无法出现。
为保险起见,现将执行步骤记录如下:
- 在 AnimationPlayer 中复制 G_attack1,并将其命名为 08_G_attack1_(2)
- 在 player_2 游戏对象中执行“动画批量加载”
- 将状态 G_attack1(2) 的“动画类别”更改为 08_G_attack1_(2)
→ 测试运行(情况与之前相同,未发生变化)
我们已按照上述流程进行了修复。
此外,已将处理后的项目文件发送至 pgmmv-support@gotchagotcha.jp,请您查收。
敬请确认,谢谢。
Hiro_T 先生,
我们收到通知,尚未收到对应支持邮件的项目。
烦请您重新发送,谢谢!
数据已确认。
这可能是受击判定帧的规格问题。
※③的受击判定帧较长,看起来像是在②的刺拳按下按钮的时机满足了条件。
■调整方案
在 G_attack1(2) 的条件中存在。
请将输入判定帧数从 [4] 改为 [1]。
Hiro_T
15
谢谢。
将调整方案的输入接收帧数设为1后,刺拳现在会连续打出两次。
接下来可能会遇到另一个问题:目前,如果在同一项目文件中,在刺拳攻击期间停止按下按钮,玩家和敌人都会暂时僵住。虽然玩家的刺拳攻击动画两者均为1秒,但停止时间却超过了这个时长。而第三击直拳则没有问题。
最初提到的只有特定敌人出现振动动画并僵住的问题,似乎更多发生在敌人背靠墙壁瓷砖、玩家攻击刚好命中的情况下,并在第三击直拳时触发。不过,也可能存在其他未察觉的情况。
一次性提出这么多问题,非常抱歉。
请多多指教。
1 个赞
如果删除了 enm_ax_2 和 player_2 的 TakenDamageSettings,会发生什么行为?
如果除了动画播放之外时间还会停止,那可能是命中停顿或动作中的时间操控。
由于已实现 StateDebugger,将其放置在场景中并指定目标为“enm_ax2”,即可了解敌人当前的状态。
观察后可发现,在玩家攻击判定生效期间,敌人似乎正在高速切换“damage连续”和“damage”状态。
因此,您可以尝试通过以下方式进行调整:
- 为敌人设置无敌时间
- 将玩家 AttackArea2D 的“仅攻击一次”选项设为开启
Hiro_T
18
感谢您的反馈。因“damage连续”到“击退”的链接缺失,导致了伤害固定的问题。现在,无论以何种方式攻击,都会进入倒地状态。
对于如此初级的疏漏,深表歉意。
1 个赞
Hiro_T
19
有个新问题,我希望单次攻击只命中一次。我在AnimationPlayer中添加了关键帧,将“player的AttackArea2D”的“仅攻击一次”设置为ON,但这导致TakenDamageSettings中的命中停顿效果消失了。
我想同时使用这两者,请问有方法吗?
在我们手头的项目中也确认了类似的行为,
我们将进行调查。
一旦确认是通过数值修复还是某种 bug,我们将立即与您联系。