Answers:
您可以使用BlendTrees解决此类问题(通常,明智的做法是经常依赖混合树)。混合树是一种多动画状态,它基于一个(浮动)参数来决定它包含的哪些动画当前处于活动状态(或者结果动画可以是多个动画的混合)。即使没有混合动画但进行交换,动画也会在动画中期进行交换(即,如果“退出”动画为35%,则新动画将从35%开始播放)。所有这些都从“外部”隐藏起来,就好像它是一种简单/单一状态一样。
例如,您有一个具有8个精灵动画的混合树(具有4个主要方向和4个对角线方向的空闲)。在此混合树中有2个参数-“水平”和“垂直”。然后基于这两个参数,混合树将决定要播放的动画。基于“水平”参数,混合树将在左/右动画之间进行选择,而“垂直”参数将决定上/下动画。然后,当组合在一起时,您将拥有全部8个带有对角线的动画(这与操纵杆/操纵杆后面的想法相同)。
因此,这有点令人困惑,即使StackExchange不喜欢链接,我也会链接我制作的简短示例视频。注意屏幕的右上方。灰点是“状态” /动画,活动的是靠近红点的状态。如开始时所说,它甚至可能更加复杂,并且每个动画都基于其与红点的距离而具有影响力/强度,从而导致多个动画之间的融合。
从外部看,它只有一个状态(混合树),当您对步行和攻击应用相同的概念时,将只有3个状态链接。
右键单击一个空的Animator区域创建状态->从新的混合树创建混合树。从那里开始,一切都在检查器中。选择混合树后,您可以选择混合树的类型(1D,2D等),添加动画,放置动画(相对于参数值)并选择控制参数。
如果您想了解有关融合树的更多信息,请参见Unity- Unite 2016和 Unity Tutorials。
这里的问题是您试图将所有内容捆绑在一起,而不是使用触发器在空闲之间进行切换。您应该使用if-else或条件切换的情况来选择空闲动画。我制作了一个看起来更加整洁的图表(假设其中之一是默认情况):
附加信息: