UE4_f3视角修正
按之前的步骤做下来,有一个小bug,当我们上下移动视角的时候,只是摄像机在旋转,所以我们可能会看到一些奇怪的东西,比如发现自己没脑袋
我们想要的效果是能够让 手臂跟随着摄像机一起移动,也就是让我们的模型“弯腰”。
首先在动画蓝图的动画图表中右键输入transform bone,
在骨骼中找到有关弯腰的三个关节。
用get control rotation来获得我们控制器的旋转值。
运行一下大概是这样的。
P指的是我们上下的幅度,最高是90,最低是270.(平视时是0,当向下看时会从360开始减,一直减到270)
Y指的是我们左右的幅度。R表示的是我们的顺时针或逆时针的旋转值(第一人称中一直是0)
复制三份transform bone,分别指向spine_01,spine_02,spine_03,并且把Rotation的RotationMode改成Add to Existing,表示将输入的值添加到原有旋转值上。
(Translation 和 Scale 用不到,可以先关掉。)
用一个变量Spine Rotation表示旋转值。
在动画蓝图的事件图表中新增一个改变spine rotation值的方法。
说明,因为弯腰只改变一个轴,所以其余两个轴设为与之前的一样。
注意点一,在动画蓝图中经过测试,当改变X(Roll)时才会改变人物的弯腰状态。而get control rotation中,通过第一次的打印测试,发现Y(Pitch)才是控制器中控制弯腰的轴。
所以要把Control的Y(Pitch)赋值给 Spine Rotation的X(Roll)。
注意点二,经过打印测试,当我们抬头时,控制器的Y(Pitch)是从0到90的,低头时是从360到270的。而在动画蓝图中,X填为正值时是弯腰,负值时是抬头。这又是不一样的地方。
所以做一个判断,如果>180说明我们正在低头,获得(360-当前Y值)。<180说明我们在抬头,直接乘一个负一。
注意点三,因为我们是同时旋转了三个关节才实现的弯腰抬头,所以我们处理后的值必须/3才能赋给SpineRotation。比如说我们抬头抬到最大90,也就是每个关节最大30。
添加脚部动画
首先创建一个2D的混合空间(一个轴表示速度,一个轴表示方向)
速度设为20个格子,方向设为8个格子
在速度为360的数轴上添加Run的各个方向的动画。这里还添加了一个冲刺动画和一个静止动画。
把这个混合空间拖到Unarmed_Idel/Run中。
因为我们只想让腿动,所以我们需要一个骨骼的分层混合。
注意左面的设置,从spine_01开始混合(作为区分上下身的标志),还要把Mesh Space Rotation打开。
复制上半部分到每个状态中( jump可以不做,因为跳起的时候脚是不动的)
用一个封装好的函数,calculate direction获得-180到180的方向值。并传入相应的参数。
视角限制