Unity Root Montion详解
在游戏开发中我们常见的动画文件一般分为两种,一种是in place动画,也就是不带位移的动画,另一种是root montion动画,也就是自带根位移的动画,这种所谓自带跟位移的动画能够带来的好处是显而易见的,它有效的避免了角色动画和实际位移不同步的现象。那么从这一教程,就让我们详细的了解一下root montion。在讲解原理之前,我们先实际应用一下,打开mixamo这里的所有角色动画都是如此磨损动画,麦克赛某的用法请参考我的这一期视频,我们在这里搜索logo motion,找到这个基本的角色移动包把它下载下来,这个动画包里没有后退的动画,所以我们再单独下载一个把下载完的FBX动画文件导入unity之后,把他们全部切换成humaoid的动画,
如果使用动画时出现了走样的问题,请参考的这期教程对avatar文件进行调试,因为这里所有的动画文件都来自于同一个模型,所以我们只需要调试一个avatar的,然后剩下的所有动画文件都可以使用这个avatar来把自己转换成humanoid动画,那么我们就使用这个调试好的idle的,全部转换好了之后,呢我们把场景里的角色模型投进来看一下,可以看出动画是完全没有走样的,只是这些动画似乎并没有自带位移,这是因为这个角色上的animator组件并没有打开root motion的功能,在场景中找到我们的角色,把他的animator组件里的apply root motion的选项给勾选上。
关于animator组件的详细介绍,请参考我的这一期视频(https://www.bilibili.com/video/BV1x44y1e7Ro)。再来看一下现在角色就可以移动起来了,找到我们接下来要使用的动画,把它们的循环功能给勾上,对动画片段的修改可以在fbx文件下完成,也可以找到FBX文件下的动画片段文件,按Ctrl+ d把它复制出来,然后在这个动画片段文件里进行修改,我们之前的操作都是在动画片段文件里做的,这一次我们就直接在fbx文件里操作的如果,我们把这个fbx动画文件拖进状态机的话,
你会发现状态机里的动画状态的名字和FBX文件的名字并不一致,这是因为状态机里使用的还是FBX文件下动画片段的名字,我们可以选中FBX文件,然后在检视视图下找到这里的动画片段更改它的名字,然后我们再把它拖进来,这样名字就正确了。不过我并不打算为这些如此陌生动画新建动画状态,为了方便和之前的动画做对比,我们找到这个状态机,选中之后按CTRL d复制一分,重命名root motion controller,然后把这三个动画状态里的动画片段改成自带动画片段,
下面我们新建一个角色控制脚本,当我们检测到玩家按下前进,那么就把前进设置为true,否则就把前进设置为false。检测到玩家一下后退就把后退设置为true,否则就把后退设置为false,在这个脚本里我们完全不需要处理角色的位移,
保存脚本回到游戏场景复制一个角色,换掉animator里的状态机,确保animator这里的apply root motion是勾选的,再更换一下控制脚本,在player input中修改一下需要调用的移动方法,开始游戏看一下,角色现在可以前后移动了,仔细看一下角色的脚下现在已经完全没有滑步现象了,不过新的问题来了,角色似乎并没有走直线,我们只是按了前进和后退,他居然转向了,而且似乎角色的高度也在下降,脚都陷到了地面以下。其实在动画预览窗口这里就能够看出来,角色动画并不是沿直线运动,而且问题还不止于此,之前通过混合数不然的去我们成功的让角色移动速度,所以遥感的推动幅度而改变。现在想要使用混合术来管理root,motion动画的话就不得不面对一个问题,那就是角色的移动是由root mation动画本身,而不是脚本来控制。
[MyText]这里插入要隐藏的内容[/MyText]
扫描二维码推送至手机访问。
本サイト上に掲載の文章、画像、写真などを無断で複製することは法律で禁じられています。全ての著作権はGAMESHに帰属します。