大家好!我经常看到关于如何创建复杂动画树的帖子,所有的东西都在各种过渡之间混乱不堪。由于我自己也曾经遇到过这个问题,我决定分享一些解决方案,不需要使用Animancer或在代码中使用叠加效果。即使你喜欢Animancer,也可以使用代码控制动画,我只想帮助那些想了解更多关于动画器的知识的人,并且展示使用正确的知识和工具,可以让动画器看起来不像人们说的那么糟糕。

我不会对每个解决方案进行详细说明,而是只提供一个粗略的概述。如果你想知道更多的细节,可以在YouTube上找到许多教程。虽然很多人知道子状态,但在那些“乱糟糟”的帖子中却很少有人提到Any State。

以下四个工具可以帮助你解决这个问题:

  • 子状态(Sub States)
  • Any State
  • 层(Layers)
  • 混合树(Blendtrees)

子状态(Sub States)
子状态可以看作是一种工具,用于创建“文件夹”来存放动画。它可以让你在进入和离开时使用过渡,隐藏你放入其中的内容,使主页面不至于过度膨胀。然而,仅靠子状态并不能减少过渡数量,因为你仍然可以创建大量过渡,它们只会指向那个“文件夹”。

Any State
Any State是消除过渡混乱的关键工具。很多时候,人们会创建大量过渡,因为需要从任何状态进入另一个状态。例如,下落动画通常需要从行走、跑动、休息(如果地面可以被破坏或擦除)等状态进入。显然,连接所有这些状态的解决方案是连接所有这些状态并使用过渡。然而,这并不是最好的解决方案。更好的解决方案是创建一个连接从Any State进入下落动画的连接,并在条件参数中限制它。例如,如果你不想在战斗中进入下落动画(如在恶魔之刃游戏中),你可以限制它,只有在战斗参数为假时才可以进入。

一个需要注意的细节是“可以转换到自身”的设置标志,这会允许从状态本身进入,通常是在第一次使用Any State时是一个容易遇到的问题。

层(Layers)
层与其他软件如Photoshop、Indesign等一样工作。层将动画叠加在一起,使其成为一个很好的用途,例如在射击游戏中只显示上半身动画。要创建一个叠加层,只需进入层的设置并将混合模式设置为叠加。另一个使用层的方法是将它们设置为覆盖并使用它们作为第二套动画,如果你的角色处于不同状态。在理论上,你可以将它们添加到你的正常层,但这会使层变得过于拥挤。

混合树(Blendtrees)
混合树是消除动画混乱的最佳工具之一,特别是在多方向移动动画中。基本上,混合树可以设置为获取一个动画器字段,控制正常移动、侧向移动和运动修饰。对于2.5D/3D游戏来说,这些混合树尤为重要,因为它们有更多的动画,因为你可以在多个方向移动,而2D游戏则相对简单。以下是来自我正在开发的游戏的截图。这个角色使用这个动画器有60多个动画,但我认为它仍然很清晰易读,并且容易维护。