isa
1
您好。
目前,我们使用 Any State 来显示对敌方对象造成伤害时的伤害数值。
以下是理想情况①,但现状却是②。如果有解决方法或替代方案,请告知。
※若处于②的状态,动画会从开头重新播放,导致持续攻击敌人时,敌人无法进行反击。
①理想情况
• 敌人进入攻击动作
• 对敌人发起攻击
• 跳转至 Any State,生成伤害数值显示对象并展示伤害
• 返回之前的状态
★ 敌人从攻击动作的“中途”继续
②实际情况
• 敌人进入攻击动作
• 对敌人发起攻击
• 跳转至 Any State,生成伤害数值显示对象并展示伤害
• 返回之前的状态
★ 敌人从攻击动作的“开头”重新开始
关于伤害显示,正如您所指出的,如果在一个对象上执行,即使使用 AnyState,受击状态似乎也会被中断。
因此,是否可以考虑另外准备一个用于生成伤害对象的子对象,并在那里进行伤害显示?
1 个赞
isa
3
感谢您的联系。
非常抱歉,我可能理解有误。目前我们的流程是:
攻击命中敌人 → 在敌人侧的 VS 中跳转到 Any State,生成显示伤害的子对象并在敌人头顶展示伤害数值 → 经过一定时间后销毁该子对象。
(伤害显示用的子对象是单独准备的)
您是指在不使用 Any State 的情况下,在某个时机生成显示伤害的子对象吗?
是的,那样也可以。将游戏对象作为子节点放置在另一个游戏对象下也是可以的。
例如,将敌对游戏对象作为父节点,将专门用于生成伤害数值的子节点放置在其下:
敌对游戏对象
└ 伤害数值生成专用游戏对象
然后从该伤害数值生成专用游戏对象中实例化伤害数值对象。
isa
5
抱歉,我难以将我的需求与您提供的答案内容对应起来……
我想实现的是:
「在敌人攻击动画期间攻击敌人
→ 在敌人头顶显示伤害数值
→ 随后从敌人攻击动画的『中途』恢复攻击动作」
类似于格斗游戏中常见的超级盔甲效果。
是指通过您提到的「专用于生成伤害数值的 GameObject」的 HitCollision 等,判定非敌人对象受到的攻击命中
→ 跳转到 Any State 状态并显示伤害数值
→ 将受到的伤害传递给父对象
这样的流程吗?
>①理想流程>・敌人进入攻击动作
>・对敌人发动攻击
>・跳转到 Any State 状态,生成显示伤害数值的对象并显示伤害
>・返回之前的状态
>★敌人从攻击动作的「中途」恢复
“专为生成伤害数字而设计的游戏对象”的状态设置大致如下:
待机状态 → 条件“指定对象(敌人)的变量‘受到伤害量’> 0” → 状态“生成伤害数字对象” → 待机状态
“用于显示伤害数字的对象”中,预计已设置如下内容:
“显示文本:指定对象(敌人)的变量‘受到伤害量’”
如果采用这种方式,敌人对象在自由移动的同时,受到攻击时便能显示伤害数字,您觉得如何?
2 个赞
我刚才重新看了一下示例,
示例项目 Perfect Dodge Sample 中的 HP 条伤害显示采用了这种格式,或许可以作为参考。
2 个赞
isa
8
谢谢!我终于明白了!
不过,按照您提供的内容,似乎需要为每个敌对角色创建专用对象……
如果有更简单的方法就好了,不过我先按照您告知的方法进行尝试。
非常感谢您花费时间和精力进行探讨和调查。
1 个赞
其实可以在anystate,执行完展示伤害后,从这个动作中连一根线,连到你觉得要执行的下一个动作,然后就可以实现执行完这个anystate里面的动作后,想要继续执行哪一个动作嘛
2 个赞
嗯——,虽然似乎还有使用脚本的方法……
如果敌人种类较多的话,
可以考虑将其作为“子对象”生成,并将变量目标设为“父对象”,这样就能实现通用化。
不过,届时也需要在伤害显示对象中添加 ChildSettings。
1 个赞
isa
11
谢谢!
在指定父对象时,由于必须输入对象路径,我原以为需要为每个敌对象创建专用的子对象,但在 1.0.7 补丁中,原来也可以引用“非指定文件路径的父对象变量”了。
刚才我已经实现了将子对象共通化,达成了目标。
非常感谢。
1 个赞