在 Unity Animator 中使用“任何状态”的问题

Posted

技术标签:

【中文标题】在 Unity Animator 中使用“任何状态”的问题【英文标题】:issue using "Any State" in Unity Animator 【发布时间】:2018-08-28 21:37:00 【问题描述】:

所以,我正在制作一个小 2D 游戏,在这个游戏中玩家可以滑雪,所以,我制作了玩家动画师,我希望玩家滑雪与状态无关,所以我使用了“任何State”状态,使用名为“isSnowboarding”的布尔值将当前动画转换为“9_Snowboarding”动画,效果很好。

当我希望玩家跳跃时,问题就开始了,我创建了跳跃动画,并创建了一个名为“isJumping”的 bool 来实现转换,并通过代码将 bool 设置为 true。

动画控制器不停地转换“9_Snowboard”到“10_SnowboardJumping”,而不是转换到动画并播放它,我不知道如何解决这个问题。

【问题讨论】:

【参考方案1】:

或者,如果您出于某种原因绝对需要一个布尔值,您可以在 Any State to your State Die 的转换设置中禁用“可以转换为自我”选项。

【讨论】:

如果我这样做,分配给目标状态的动画将不再循环。这个标志是否必须为真才能有状态动画循环? @Wolfram 我认为是的,因为当它循环时它会回到相同的状态,在这种情况下它不能。【参考方案2】:

特别是在您的情况下,您需要使用“触发器”而不是“布尔”参数。

bool 的问题在于 isJumping 始终设置为 true,因此您的条件会继续匹配,并且您会继续转换到相同的动画。

另一方面,“触发器”一旦使用就会禁用。所以尝试添加类似Jump触发器的东西并在你的代码中设置它

【讨论】:

哇哦,其实也是我的问题! Unity 不会像切换状态时通常那样为转换循环设置动画,我猜这可能是 Any State 的特殊性。

以上是关于在 Unity Animator 中使用“任何状态”的问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity - Animator组件

Unity游戏教程初步:Animator的使用

unity 对Animator动画系统的研究

Unity Animator简单使用

在 Unity2D Sprite 中使用 Animator 将动画添加到游戏对象时无法翻译游戏对象

动画系统-Animator详解