unity 动画控制器
Unity动画控制器能够让我们轻松控制人物动画。不过,它的相应机制较为复杂,下面我们就来详细了解一下Unity动画控制器。
开始
到目前为止,我们仅学习了如何处理像ZombieWalk和CatSpawn这样的动画片段。在第一部分中,我们了解到Unity会将一个动画组件附加到游戏对象上,以便播放这些片段。但动画器是如何知道该播放哪个片段的呢?
为此,我们在层次结构中选择猫对象,然后在检视器中查看动画器组件。在控制器字段中,设置一个名为“猫”的对象名,如下所述:
此对象是一个动画器控制器,它是Unity在创建猫的第一个动画片段时自动创建的,其作用是决定播放哪个动画。
注意:动画器包含一些可以在检视器中编辑的属性,但在本教程中,我们不会涉及相关操作,你可以在Unity的动画器文档中自行学习。
在项目浏览器的动画文件夹中,包含一个名为“猫”的控制器,同时还有一个名为“僵尸”的控制器,后者是Unity为僵尸游戏对象创建的。
注意:虽然Unity会自动创建这些动画器控制器,但你也可以在Unity菜单中手动选择“Assets\Create\Animator Controller”来创建。
通过选择“Window\Animator”打开动画器视图。需要注意的是,不要被相似的名称所干扰,这个视图与你之前使用的动画视图不同。
在层次结构中选择猫对象,以查看动画器视图中的动画器控制器。
现在,先忽略动画器视图左上角和左下角分别名为“图层”和“参数”的区域,查看由不同矩形填充的视图部分。
注意:你可以通过拖拽这些矩形来随意管理它们,如果你的屏幕显示效果与上述描述不同,也不必感到奇怪。
你所看到的这些矩形代表的是一个状态机的状态,这些状态决定了应该在猫对象上运行哪个动画片段。
如果你从未听说过状态机,可以将其理解为一些可能的状态或条件。在任何给定的时间,机器都处于这些已知状态之一,并且状态机包含用于决定状态转换的规则。
注意:很多状态机是有限状态机,这意味着它们在同一时刻只能处于一个状态。从技术层面来讲,动画器控制器所定义的状态机并非有限状态机,因为在状态转换期间,会有不止一个状态处于激活状态。稍后我们会深入学习更多关于状态转换的内容。
除了那个名为“任意状态”的矩形之外,其他矩形分别代表一个动画片段,后续我们会详细讲解。
橙色的矩形表示默认状态,如下图所示,我们可以将其视为动画器控制器开始运行时的状态。
Unity会默认将动画控制器相关的首个动画片段设置为默认状态。由于你是按顺序创建猫的动画片段的,Unity会正确地将CatSpawn设置为默认动画。然而,如果你想指定一个不同的默认状态,可以在动画器视图中右键单击新状态,然后从弹出菜单中选择“设为默认”。
下面的图片展示了如何手动将CatSpawn设置为默认状态。
当动画器视图仍然可见时,你可以播放场景。此时,注意在CatSpawn状态底部会出现蓝色的进度条。此进度条表示在状态机的任何给定帧中,猫对象所处的确切位置。
正如你所看到的,在Cats动画中,猫会持续奔跑,而不会移动到下一个状态。
注意:如果你没有看到这个蓝色进度条,请确保你在层次视图中选择了猫对象。
此外,我们还需要为动画器控制器提供状态间切换所需的规则,接下来我们将详细讲解状态转换。