Unity动画系统学习笔记
Unity动画系统学习笔记
动画系统
-
Unity 动画系统
-
动画片段 Animation Clip:动画资源,用于展示游戏物体变化
-
动画状态机 Animator Controller:控制游戏物体各动画片段播放与切换
-
动画组件 Animator Componet:引用动画状态机(和替身),为游戏对象提供动画功能,为游戏脚本提供控制动画功能。
-
替身 Avatar(人型动画):复用人形动画片段。
-
动画片段(Animation Clip) 是 Unity 的动画资源,用来展示游戏物体变化情况。
它可以是游戏角色的闪转腾挪,也可以是一扇门的开闭,甚至是 UI 界面的淡入和淡出。
在 Unity 中,我们可以导入外部(FBX)的动画资源,也可以选择在 Unity 中自行制作(手动 k 帧)。
有时候我们希望可以对复杂的动画资源进行复用(尤其是人形动画)。为了解决这一问题,Unity 引入了替身的概念。
替身(Avatar)是一种人形动画骨骼的标准,所有按照同一标准配置好的人形角色都可以播放同一套动画。
在位某个游戏对象,比如玩家角色准备好动画片段之后,我们就可以把它放入动画状态机进行管理。
动画状态机(Animator Componet)会帮助我们跟踪当前动画的播放状态,并且根据我们的设置来决定何时以及如何切换动画片段。
我们知道游戏对象的功能是由组件提供的,那么一个游戏对象,比如玩家角色希望拥有播放动画的功能时,
它就必须要挂载一个相应的组件,这个组件就是动画组件(Animator Componet),
我们会把游戏对象需要的动画状态机放入该组件,如果游戏对象使用了替身系统,我们也需要把它对应的替身放进去,
然后我们就可以在游戏脚本中访问这个动画组件,从而自由地控制游戏对象的动画。
动画片段
让我们从动画片段(Animation Clip)开始深入理解整套 Unity 动画系统。
动画片段可以由外部导入,也可以在 Unity 中制作。
外部导入参考【Unity 游戏开发入门 08】:3 分钟学会白嫖顶级人形动画资源——从 Mixamo 到 Unity_哔哩哔哩_bilibili。
接下来演示如何在 Unity 中制作简单的动画片段。
制作动画片段
使用 Unity Animation 制作开门动画片段。
1. 制作门
新建一个 3D 游戏对象 Cube,并通过调整其 Scale 参数,使其看起来像一扇门。
2. 制作门轴
如果调整门 Rotation 的 Y 参数,门会以自己为中心自转,而不是绕门的一边公转。
所以需要在门的一边设置一个旋转参考点,并设为门的父对象。
此时,调整参考点 Rotation 的 Y 参数,门就会围绕该点公转,实现开门效果。
3. 创建动画文件
打开 Animation 窗口。
选中参考点 Pivot,点击 Animation 的 Create,选择位置保存将要制作的动画片段,
按下 Animation 的 Create 后,我们同时拥有了动画系统的全部三个组成部分。
动画片段的本质
动画片段文件是使用标记语言 YAML 编写的文件。
动画片段文件是一个描述游戏物体变化正太的文本文件。
Unity 资源文件大多都是 YAML 语言编写的文本文件(动画片段、动画控制器、预制件、场景等等)。
4. 制作开门动画
5. 理解动画复用
是否能够用一个动画文件旋转任意一个游戏对象?
动画复用原理
处理多个游戏物体的动画片段,会在文件中写上该些游戏物体的名称。
Unity 通过名称找到正确的游戏物体,然后按照动画文件中的描述改变这些游戏物体,播放动画。
游戏对象的名称如果和动画文件里不一致就无法正常播放。
反之,如果另一组游戏对象的名称都和动画文件里描述一致,就可以复用动画。
推广到人物游戏物体,我们把人体的每一个关节都制作成一个 pivot,然后用一个动画片段文件来描述这些 pivot 的旋转,就可以得到一个人物的动画。
这些 pivot 的组织结构就是人体动画的骨骼。
人体动画的骨骼和动画片段,我们一般会通过专门的软件制作,比如 3DMax,Maya 和 Blender。
一个人物动画文件有两部分,分别是骨骼结构和动画片段。
将人物动画文件拖进游戏场景,使其成为游戏对象,并给骨骼挂上蒙皮,就可以看到包含动作的人物游戏物体。
只要骨骼结构一致,命名也一致,那么人体动画文件也可以复用。
但如果从不同地方找到人物模型,他们的骨骼结构和命名方式并不相同,难以复用人体动画。
Unity 为我们提供一个简便的解决方案——Avatar 替身系统。
动画复用实践