教程:为“原状”类人动画编写根运动脚本 (Scripting Root Motion)
有时您的动画保持为“原状”,这意味着,如果您将其放入场景中,它不会移动上面的角色。换言之,动画未包含“根运动”。为此,我们可以使用脚本来修改根运动。要把所有一切综合到一起,请遵循以下步骤(请注意,有多种不同的方式可达到相同结果,这只是其中的一种方法)。
打开包含原状动画的 FBX 文件的检视器,然后转至动画 (Animation) 标签。
确保层级视图 (Hierarchy View))。
已设为您打算控制的 Avatar(假设该 avatar 的名称是 Dude,且已被添加到从可用片段中选择动画片段。
确保正确对齐循环姿势 (Loop Pose)(它旁边的灯为绿色),并点击循环姿势复选框。

在动画查看器中预览动画,以确保动画开始和结束处流畅对齐,角色“原地”移动
在动画片段上创建一条曲线,该曲线控制角色速度(您可以通过动画导入检视器 (Animation Import inspector) 添加曲线)
为该曲线取一个有意义的名称,比如 "Runspeed"

创建一个新动画器控制器 (Animator Controller),(让我们称之为 RootMotionController)
将需要的动画片段投入该控制器,这样会创建一种以该动画为名的状态(比如 Run)
向与曲线同名(在这种情况下,名称为 "Runspeed")的控制器 (Controller) 添加一个参数

在层级视图 (Hierarchy) 中选择角色 Dude,该层级视图的检视器已包含一个动画器 (Animator) 组件。
将 RootMotionController 拖到动画器 (Animator) 的控制器 (Controller) 属性上
如果现在按“播放”,您会看到 "Dude" 在原地跑步
最后,为控制运动,我们需要创建一个脚本 (RootMotionScript.cs),该脚本实现
OnAnimatorMove
回调。
将 RootMotionScript.cs 附加到 "Dude"
请注意,动画器组件检测到一个含有
OnAnimatorMove
的脚本,应用根运动 (Apply Root Motion) 属性显示为“由脚本处理 (Handled by Script)”

现在您会看到角色以指定的速度移动。