如果输入垃圾内容,则Unity动画属性保持禁用状态

时间:2019-01-06 11:12:14

标签: unity3d animation

我目前正在开发游戏的第一个基本功能,而这个功能使我很头疼。我想实现简单的事情:对撞机仅在我的攻击动画的选定帧上激活以造成伤害,然后在完成攻击动画后将其禁用。为此,我在“动画”窗口中使用属性。我已经进行了设置,以便在攻击对撞机的第一帧上处于活动状态,在动画的最后一帧上,它返回禁用状态。

这似乎在隔离攻击按钮被按下的简单情况下有效。但是,如果我发送垃圾邮件指示输入并发动攻击,我会经常遇到所有属性操纵由于某种原因停止工作(对撞机保持禁用状态)直到我停止按下任何按钮一段时间的情况。

我尝试自行调试。我从代码中删除了有关Collider本身的所有逻辑(这就是为什么它将在GIF中放在错误的位置)的原因,而且我在动画的每一帧中都移动了Collider启用关键帧。这两个都不起作用。

Here is a link to see how my animations are set up.

Here is short clip how collider stops working after simple input.

在我之前从事的游戏中,我对动画事件也有类似的经验。这次禁用撞机的事件有时没有触发。

我知道该如何解决-我可以获取动画的持续时间,然后使用Time.deltaTime启用/禁用对撞机,但是我想知道自己在做错什么。目前,在我看来,通过Animation进行属性操作似乎极其不可靠,并且由于我在Unity中没有太多经验,很可能是我不知道某些问题而不是API错误。有人可以回答我在做什么吗?

1 个答案:

答案 0 :(得分:0)

首先,很抱歉您未及时答复,并且未添加所有必需信息。没有代码附加到此行为,所以这就是为什么我没有添加任何代码,但应该添加动画状态机的原因-毕竟这就是问题所在。我能够自己解决这个问题,如果将来有人会遇到类似的行为,我会提供详细信息。

简短答案::如果您正在使用与动画帧相关的事件,请确保这些帧正在您的游戏中播放:)

长答案:我实际上是在使用Blend树进行移动和攻击-作为对其实际工作方式的快速测试。在意识到使用混合树进行攻击不适合我的情况后,上周我重新制作了动画。正是在此过程中,我意识到,如果我发送垃圾邮件攻击,其动画将无法播放启用和重新启用触发器的关键帧。修复当然非常容易:设置退出时间和固定持续时间-在过渡到进攻状态期间。此外,我还冻结了动画持续时间的攻击以避免垃圾邮件。瞧!现在一切正常:)。