u3d animation 教程
Unity提供了Animation编辑器,可用于编辑物理动画。不过,当前该编辑器还无法编辑FK(正向运动学)和IK(逆向运动学)动画,这限制了其可编辑动画的种类。若未来能在Unity中编辑FK和IK动画,那将极大提升其功能。
动画基础编辑流程
1. 创建游戏对象并呼出动画编辑窗口
首先,在Hierarchy视图中创建一个游戏对象,这里以创建一个立方体Cube对象为例。保持该对象处于选中状态,然后在Unity导航菜单栏中选择“Window” -> “Animation”,即可呼出动画编辑窗口。
2. 创建动画文件
动画编辑窗口弹出后,点击左上角的“小红点”按钮。由于默认新建的Cube对象没有动画,此时会弹出创建动画窗口。在窗口中点击“Save”,一个名为“New Animation”的动画文件将被保存在Project视图中。
3. 编辑动画帧
动画进入编辑模式后,在右上方空白处点击鼠标右键,可添加一个Frame。点击Frame会出现一道竖向的红线,红线上方对应着Frame的时间。此时,可在左侧Transform中修改每一帧模型的位置,在编辑器中修改数值,同样会被保存在每一帧的Transform中。
4. 播放和设置动画
帧编辑完成后,点击窗口左上角的运行按钮,可在游戏视图中看到立方体对象按照设定的每帧位置播放动画。在窗口左下角“Show: all”右侧可设置动画的播放类型,为了便于观察,可选择“PING PONG”让动画来回循环播放。动画编辑完成后,点击窗口左上角“小红点”按钮退出动画编辑模式。
5. 应用动画剪辑
退出动画编辑模式后,将刚刚编辑完的动画剪辑拖拽至立方体对象的Animation组件中,勾选“Play Automatically”实现自动播放。运行游戏,立方体对象将按照之前编辑的方式播放动画。
动画事件的使用
上述编辑过程未使用任何代码,若想动态监听动画播放事件,例如在播放几秒时执行特定代码,可使用动画事件来实现。具体步骤如下:
- 创建一条普通脚本,并将其绑定在Cube对象上。在脚本中编写两个方法,如
Event0()和Event1()。 - 再次呼出Animation编辑窗口,在时间轴的空白处单击鼠标右键,添加一个动画事件。此时会弹出“Edit Animation Event”窗口,窗口中间有一个“Function”选项,选择
Event0(),它将对应脚本中的Event0()方法。也可在脚本中继续添加方法,这些方法会显示在“Function”的下拉菜单中。例如,在时间轴0:10处添加一个动画事件,对应Event0()方法,那么当动画播放到0.10s时,程序将进入Event0()方法执行相应代码。
动画编辑的限制与拓展
不支持FK和IK动画
目前,Unity的Animation编辑器不支持FK和IK动画的编辑,骨骼连带动画仍需在3DMAX或Maya等软件中完成。在Unity中打开美术在3DMAX或Maya中制作的动画,会显示“Read - only”,表示该动画为只读,无法继续修改。
子节点动画编辑
Animation编辑器默认只能修改当前节点的动画。若要编辑子节点动画,需先在父节点中找到相应的子节点对象,然后通过“Window -> Animation”呼出编辑器窗口,即可开始编辑子节点的动画。
更多Unity3D教程可参考Unity3D教程手册。