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的方向值。并传入相应的参数。

视角限制

原文地址:https://www.cnblogs.com/reluctante1/p/12741782.html