UE5之瞄准视角的俯仰偏移

1.创建瞄准姿势

复制瞄准动画,删除其中多余的帧,只保留瞄准的一帧,将其创建为一个单帧动画。然后将其复制成三份,分别用于表示瞄准三个姿势的up,middle,down。

 将middle姿势动画的Additive动画类型修改为网格体空间,因为我们需要在网格空间创建叠加动画。基础姿势修改为选择的动画帧,选择middle作为基础姿势。

 将up动画的基础姿势同样修改为middle,调整其骨骼树,将spine02向上旋转15度,添加关键帧,spine03向上旋转30度,添加关键帧。(同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;
}
View Code

然后在角色的动画蓝图的事件图表中调用该函数获取pitch值,并将其提升为变量。最后在动画图表中在瞄准部分的状态机后获取刚刚创建的瞄准偏移AimingOffset_Bow,输入pitch参数即可。

 接下来就可以看到角色随着视角的变化而偏移了。

 

posted @ 2025-03-09 19:26  zxc0210  阅读(256)  评论(0)    收藏  举报