如何避免动画师中的意大利面条?


9

我正在Unity中制作动画,到目前为止我只制作了四个(上下左右),我的动画窗口如下... 在此处输入图片说明

问题是,如果我要向上移动,我希望英雄一直保持向上状态,而不要进入“空转”(或者他开始了),但这意味着我有4个空闲位置...并且每个位置都可以转换为“向上”,“向下” ,左或右,并且每执行一次其他操作就会成倍增加...

这让我觉得自己做错了...。

是否有更好的方法在不同动作之间进行转换?


我已经尝试了很长时间了。可悲的是,我的结论是,你做不到。Animator始终会变成意大利面条网,我们必须忍受它。看看这个视频虽然,它可以帮助youtube.com/...
没关系

Answers:


9

您可以使用BlendTrees解决此类问题(通常,明智的做法是经常依赖混合树)。混合树是一种多动画状态,它基于一个(浮动)参数来决定它包含的哪些动画当前处于活动状态(或者结果动画可以是多个动画的混合)。即使没有混合动画但进行交换,动画也会在动画中期进行交换(即,如果“退出”动画为35%,则新动画将从35%开始播放)。所有这些都从“外部”隐藏起来,就好像它是一种简单/单一状态一样。

例如,您有一个具有8个精灵动画的混合树(具有4个主要方向和4个对角线方向的空闲)。在此混合树中有2个参数-“水平”和“垂直”。然后基于这两个参数,混合树将决定要播放的动画。基于“水平”参数,混合树将在左/右动画之间进行选择,而“垂直”参数将决定上/下动画。然后,当组合在一起时,您将拥有全部8个带有对角线的动画(这与操纵杆/操纵杆后面的想法相同)。

在此处输入图片说明

因此,这有点令人困惑,即使StackExchange不喜欢链接,我也会链接我制作的简短示例视频。注意屏幕的右上方。灰点是“状态” /动画,活动的是靠近红点的状态。如开始时所说,它甚至可能更加复杂,并且每个动画都基于其与红点的距离而具有影响力/强度,从而导致多个动画之间的融合。

从外部看,它只有一个状态(混合树),当您对步行和攻击应用相同的概念时,将只有3个状态链接。

右键单击一个空的Animator区域创建状态->从新的混合树创建混合树。从那里开始,一切都在检查器中。选择混合树后,您可以选择混合树的类型(1D,2D等),添加动画,放置动画(相对于参数值)并选择控制参数。

如果您想了解有关融合树的更多信息,请参见Unity- Unite 2016 Unity Tutorials


2

这里的问题是您试图将所有内容捆绑在一起,而不是使用触发器在空闲之间进行切换。您应该使用if-else或条件切换的情况来选择空闲动画。我制作了一个看起来更加整洁的图表(假设其中之一是默认情况):

在此处输入图片说明

附加信息:

看看动画参数如何为动画识别,设定参数状态机的动画相结合在一起,状态机行为如何检查变量您已设置。


约翰,您好,但实际上我该怎么做?为什么我要使用触发器在空闲之间进行切换,或者完全在空闲之间进行切换?我如何使用其他方式来选择空闲的动画?同样在图表中,为什么我要先移到idleleft然后再左移而不是左移并进入idleleft等待下一个动作,否则这应该是相反的方式吗?
Matas Vaitkevicius

@MatasVaitkevicius可以在动画结束或开始时设置和检查变量。您可以制作一个空的动画,除了检查大小写情况外什么都不做,然后将其重定向到下一部分或从中创建一个抽象层。我提供了一些手册链接,以获取更多信息。
约翰·汉密尔顿,

那么,如何使用其他参数来切换转换呢?有没有例子,你的所有链接只是做手工过渡就像我在这个问题所做的机制....
麦塔斯Vaitkevicius

@MatasVaitkevicius您应该首先真正进行搜索:gamedev.stackexchange.com/questions/103611/…–
John Hamilton

但这就是我所做的。触发动作动作并启动动画,然后它进入该方向的空闲状态...现在,您要说的是(如果我理解正确的话),我可以在动画之后而不是为该方向保持空闲状态而切换机制,会选择合适的空闲时间我......但我还没有见过这样的机制的任何地方,你可以把它复制到你的答案请....
麦塔斯Vaitkevicius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.