关于使用“返回上一个状态”时的动画行为

您好。
目前,我们使用 Any State 来显示对敌方对象造成伤害时的伤害数值。
以下是理想情况①,但现状却是②。如果有解决方法或替代方案,请告知。
※若处于②的状态,动画会从开头重新播放,导致持续攻击敌人时,敌人无法进行反击。

①理想情况
• 敌人进入攻击动作
• 对敌人发起攻击
• 跳转至 Any State,生成伤害数值显示对象并展示伤害
• 返回之前的状态
★ 敌人从攻击动作的“中途”继续

②实际情况
• 敌人进入攻击动作
• 对敌人发起攻击
• 跳转至 Any State,生成伤害数值显示对象并展示伤害
• 返回之前的状态
★ 敌人从攻击动作的“开头”重新开始

关于伤害显示,正如您所指出的,如果在一个对象上执行,即使使用 AnyState,受击状态似乎也会被中断。

因此,是否可以考虑另外准备一个用于生成伤害对象的子对象,并在那里进行伤害显示?

1 个赞

感谢您的联系。

非常抱歉,我可能理解有误。目前我们的流程是:
攻击命中敌人 → 在敌人侧的 VS 中跳转到 Any State,生成显示伤害的子对象并在敌人头顶展示伤害数值 → 经过一定时间后销毁该子对象。
(伤害显示用的子对象是单独准备的)

您是指在不使用 Any State 的情况下,在某个时机生成显示伤害的子对象吗?

是的,那样也可以。将游戏对象作为子节点放置在另一个游戏对象下也是可以的。

例如,将敌对游戏对象作为父节点,将专门用于生成伤害数值的子节点放置在其下:

敌对游戏对象
└ 伤害数值生成专用游戏对象

然后从该伤害数值生成专用游戏对象中实例化伤害数值对象。

抱歉,我难以将我的需求与您提供的答案内容对应起来……

我想实现的是:
「在敌人攻击动画期间攻击敌人
→ 在敌人头顶显示伤害数值
→ 随后从敌人攻击动画的『中途』恢复攻击动作」
类似于格斗游戏中常见的超级盔甲效果。

是指通过您提到的「专用于生成伤害数值的 GameObject」的 HitCollision 等,判定非敌人对象受到的攻击命中
→ 跳转到 Any State 状态并显示伤害数值
→ 将受到的伤害传递给父对象
这样的流程吗?

>①理想流程>・敌人进入攻击动作
>・对敌人发动攻击
>・跳转到 Any State 状态,生成显示伤害数值的对象并显示伤害
>・返回之前的状态
>★敌人从攻击动作的「中途」恢复

“专为生成伤害数字而设计的游戏对象”的状态设置大致如下:
待机状态 → 条件“指定对象(敌人)的变量‘受到伤害量’> 0” → 状态“生成伤害数字对象” → 待机状态

“用于显示伤害数字的对象”中,预计已设置如下内容:
“显示文本:指定对象(敌人)的变量‘受到伤害量’”

如果采用这种方式,敌人对象在自由移动的同时,受到攻击时便能显示伤害数字,您觉得如何?

2 个赞

我刚才重新看了一下示例,
示例项目 Perfect Dodge Sample 中的 HP 条伤害显示采用了这种格式,或许可以作为参考。


2 个赞

谢谢!我终于明白了!
不过,按照您提供的内容,似乎需要为每个敌对角色创建专用对象……
如果有更简单的方法就好了,不过我先按照您告知的方法进行尝试。
非常感谢您花费时间和精力进行探讨和调查。

1 个赞

其实可以在anystate,执行完展示伤害后,从这个动作中连一根线,连到你觉得要执行的下一个动作,然后就可以实现执行完这个anystate里面的动作后,想要继续执行哪一个动作嘛

2 个赞

嗯——,虽然似乎还有使用脚本的方法……

如果敌人种类较多的话,
可以考虑将其作为“子对象”生成,并将变量目标设为“父对象”,这样就能实现通用化。
不过,届时也需要在伤害显示对象中添加 ChildSettings。

1 个赞

谢谢!
在指定父对象时,由于必须输入对象路径,我原以为需要为每个敌对象创建专用的子对象,但在 1.0.7 补丁中,原来也可以引用“非指定文件路径的父对象变量”了。
刚才我已经实现了将子对象共通化,达成了目标。
非常感谢。

1 个赞