如果输入是垃圾邮件,Unity动画属性将保持禁用状态

问题描述 投票:0回答:1

我目前正在研究我的游戏的第一个基本功能,这个让我感到头疼。我想实现简单的事情:盒子对撞机仅在我的攻击动画的选定帧上激活以造成伤害,然后在攻击动画完成后被禁用。为了实现这一点,我在动画窗口中使用属性。我已将其设置为使得在攻击对撞机的第一帧变为活动状态并且在动画的最后一帧上它返回到禁用状态。

这似乎适用于孤立的攻击按钮按下的简单情况。但是,如果我发送方向输入和攻击垃圾邮件,我会经常出现所有属性操作因某种原因停止工作(碰撞器保持禁用状态)直到我停止按任何按钮一段时间的情况。

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

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

我在之前的游戏中有过类似的动画事件经验。这个时间事件禁用对撞机有时不会发射。

我知道如何解决这个问题 - 我可以获得动画持续时间,然后使用Time.deltaTime启用/禁用对撞机,但我想知道我做错了什么。目前在我看来,通过动画进行的属性操作似乎非常不可靠,因为我在Unity中没有很多的实际操作,可能是我不知道某些东西而不是API错误。那么有人可以回答我做错了什么吗?

unity3d animation
1个回答
0
投票

首先抱歉迟到的回复并没有添加所有必需的信息。没有代码附加到这种行为,所以这就是为什么我没有添加任何,但应该添加动画状态机 - 因为这毕竟是问题。我能够自己搞清楚,如果有人将来会遇到类似的行为,我会回来详细说明。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.