这节课比较难懂,我也不是很理解
动画蓝图
新建一个动画蓝图。首先新建一个人物蓝图的变量用来获取人物的属性,使用第一行蓝图来初始化,当人物为Echo时获取它的movement组件,存为变量。然后动画的每一帧都从movement组件里拿出xy的速度用作后边运动状态的转变
新建状态,添加动画,设置进入状态条件。当人物的速度大于0进入跑步动画,反之待机动画
The Animation Instance
新建一个c++类
编写代码
进入动画蓝图,将父类改为我们刚刚写完的代码C++类,就可以访问我们再代码里定义的变量
打开这个选项我们可以看到从父类继承了那些东西
最后在人物的蓝图里Mesh里吧动画模式改为动画蓝图
Jumping
添加一个动作映射,空格
添加按键绑定,本来就存在Jump函数在Character类里
新建IsFalling变量,为跳跃动画做准备
将走路的动作存储起来(cache Poses),方便我们在MainState中调用
在OnGround中直接Usecachepose调用之前写好的走路和待机状态,使用isFalling的值来进入退出跳起;在最后回到走路时,先设置一个自动更据动画来播放(基于状态顺序播放器的自动规则),在添加一个依据动画时间和速度来进入走路状态
Inverse Kinematics逆运动学
当人物的腿处于边缘时,应该一只腿在地上,一只腿在台阶上,这需要逆运动学去计算需要将身体往下移多少,并且让腿部骨骼发生变化
新建一个动画里的controlRig
进入骨骼树创建虚骨骼
回到control,新建函数,新建变量
新建函数
1、球体追踪,获取每只脚更下边地面的距离
2、平滑的得到偏移量
3、使用最大的偏移量去让人物的盆骨进行下移
4、将偏移量添加到虚拟的ik
5、使用全身的ik将变换附加到左右脚
回到动画蓝图,将control rig插入,并让速度为0时调用这个偏移的动画