00:00
大家好,我是小郭,今天我们来看看角色行走和奔跑的切换,这个功能相对比较简单,所以同时我会告诉大家角色移动的时候如何更加贴近地面,显得角色更加平滑而真实。还是那句好话,代码已经上传到博客了,要有代码的自行下载。好,我们打开unit。第一步,首先把所有的动画都变更为人形,然后改好名字。行手动画和奔跑动画勾选上循环播放。第二步,我们打开动画器,把idle动画拖拉到动画器上。然后右键创建一个branch。这里它会自动创建一个触发变量。我们先把他的名字改为W。然后我们再把爱朵动画和branch通过过渡线连接起来。触发还是使用one变量来触发?
01:05
接着我们双击打开branch。首先我们创建两个motion,一个设置行走。一个设置奔跑。随后我们把奥美发售的勾选掉。在设置FA的值。行走,我E设置为1。奔跑设置为3。那这里是什么意思呢?就是B的那个触发变量是1的时候,就触发branch里面的行走动画,那它是3的时候就出发奔跑的动画。好,我们可以搞代码去了,我们双击打开脚本。除了动画器和角色控制器外,我们还需要声明3个速度的变量。第一个变量代表的是它当前的速度。那另外两个变量代表的就是行走速度和奔跑速度,那行走速度和奔跑速度的值我们就对应branch那边的设置。
02:04
这里设置为1和3。那大函数里面获取动画器和角色控制器。然后在update函数中关于角色移动的部分,我就简单的总结一下,想详细了解的小伙伴们可以去发我的博客或者我之前的视频。我们先获取到水平虚拟轴和垂直虚拟轴,赋予给一个向量,然后再设置角色的面朝向。好,接着我们今天的重点就来了,当玩家按下shift键的时候,切换成奔跑,所以把奔跑的速度3赋予给当前的速度变量,另外就是把行走的速度1赋予给当前的变量。在使用simple move来实现移动,那就行了,很简单。那动画部分,当用户按下w sad时,就启动run。
03:05
从站立idol就可以过渡到B去那里。那最后我们就把当前的速度给branch,就可以切换成行走和奔跑了。好,我们切换回Unity。接下来,我们一起来看看怎样可以让角色的移动更加贴合地面。其实很简单,我们选中行走动画。它这里有个op pose.它是处理循环动画的首尾帧衔接问题,比如动画的首尾帧存在差异的时候,勾选上这个loop pose Unity, 它会自动对首尾帧进行一个插值的处理,使动画的那个循环播放更加的平滑。第二个参数would transform transform rotation, 这个选项意味着动画在剪辑中的旋转信息会被用到动画的根骨络上面。
04:03
它可以确保那个动画的开始姿势和角色的现在的当前姿势进行一个匹配,可以让动画的播放更加的连贯。那下面would transform position.它是什么意思呢?它控制动画在播放时角色的根节点上的Y轴位置。那一般角色的根节点都会在脚下,我们也把它设置到脚下,它可以把这个根节点紧贴着角色的角。比如我们的角色有个跳跃的动作,那当角色跳起来的时候,根节点也会跟着向上移动,如果没有勾选这个选项的话,根节点就会一直在地面上。最后我们打开动画器。我们在这里勾选上不IK。
05:01
然后我们来运行一下看看。大家可以看到,角色移动的每一步都会更加的贴合地面,更加的真实。好,我是小郭,期待大家的点赞关注我们下期见。
我来说两句