1.创建瞄准姿势
复制瞄准动画,删除其中多余的帧,只保留瞄准的一帧,将其创建为一个单帧动画。然后将其复制成三份,分别用于表示瞄准三个姿势的up,middle,down。
2.设置瞄准偏移
首先右键 动画---旧有---瞄准偏移1D,添加一个瞄准偏移混合器AimingOffest_1D,选择人物骨骼。其横轴表示角色的俯仰值pitch,范围设置为-45~45。由于只有三个姿势,因此将网格划分设置为2。然后在-45,0,45处分别添加三个姿势。
然后将预览基础姿势设置为瞄准的动画,按住ctrl移动鼠标,就可以预览在不同pitch下角色的瞄准偏移了。
3.获取角色的pitch
设置完成之后,接下来就是去使用瞄准偏移了。我这里用的是C++,因此在代码中添加一个蓝图可调用的函数,用于获取角色pitch值:
UFUNCTION(BlueprintCallable, Category = "CharacterParam") float GetCharacterPitch() const;
float AEpicCharacter::GetCharacterPitch() const {float Pitch = 0.0f;// 获取角色的控制旋转FRotator ControlRotation = GetControlRotation();if (ControlRotation.Pitch>=270){Pitch=ControlRotation.Pitch - 360.0f;}if (ControlRotation.Pitch<=90){Pitch=ControlRotation.Pitch;}return Pitch; }
然后在角色的动画蓝图的事件图表中调用该函数获取pitch值,并将其提升为变量。最后在动画图表中在瞄准部分的状态机后获取刚刚创建的瞄准偏移AimingOffset_Bow,输入pitch参数即可。
接下来就可以看到角色随着视角的变化而偏移了。