欢迎光临散文网 会员登陆 & 注册

Unity-教程:为“原地就位”的人形动画编写根运动脚本

2021-03-04 09:35 作者:unity_某某师_高锦锦  | 我要投稿

有时,动画表现为“原地就位”,这意味着如果您将此动画放入场景,它不会移动所依附的角色。换言之,该动画没有包含“根运动”。为此,我们可通过脚本修改根运动。为了将这一切融合到一起,请遵循以下步骤(注意,实现相同结果有很多不同方法,这只是一种方案)。

  • 打开包含“原地就位”动画的 FBX 文件的检视面板,然后选择 Animation 选项卡

  • 确保 Muscle Definition 设置为要控制的 Avatar(假设此 Avatar 称为 Dude_,并且已将其添加到 _Hierarchy 视图__)。

  • 从可用剪辑中选择动画剪辑

  • 确保 Loop Pose 正确设置(旁边的指示灯为绿色),并已选中 Loop Pose 的复选框

  • 在动画查看器中预览动画以确保动画的开头和结尾顺利衔接,并且角色正在“原地就位”移动

  • 在动画剪辑上,创建曲线来控制角色的速度(可通过 Animation Import Inspector Curves > + 添加曲线)

  • 为该曲线提供有意义的名称,例如“Runspeed”

  • 新建 Animator Controller__(将其命名为 RootMotionController__)

  • 将所需的动画剪辑放入其中,此时应该会创建一个具有动画名称的状态(例如 __Run__)

  • 将参数添加到与曲线同名的控制器(在本示例中为“Runspeed”)

在 Hierarchy 中选择角色 Dude__(其检视面板应该已经具有 Animator__ 组件)。

  • 将 RootMotionController 拖到 Animator 的 Controller 属性上

  • 如果现在按 Play,应该会看到“Dude”在原地奔跑

最后,要控制运动,我们需要创建脚本 (RootMotionScript.cs) 来实现 OnAnimatorMove 回调:

应将 RootMotionScript.cs 连接到“Dude”对象。进行此操作时,Animator 组件将检测到脚本有 OnAnimatorMove 函数并将 Apply Root Motion 属性显示为 Handled by Script


Unity-教程:为“原地就位”的人形动画编写根运动脚本的评论 (共 条)

分享到微博请遵守国家法律