天天看点

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

目标

目标是在上一篇博客《学习UE4动画蓝图:创建一个射击姿势并使用》的基础上,让射击姿势可以瞄准朝向相机的方向。

学习过程中主要参考了《创建瞄准偏移 | Unreal Engine Documentation》。

1. 创建9方向的单帧动画序列

我之前的一个误区是:瞄准偏移由静态(指单帧)的姿势混合,但是当我试图将姿势拖入新建的瞄准偏移时发现被提示是个无效的资源类型:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

也就是说,瞄准偏移是由动态(指多帧)的动画序列混合而成的,其本身也可以是动态的。这样看来它和2维的混合空间就类似了,只不过区别在于它要求动画序列是Additive的(即表示一个增量),否则拖入动画序列时会被提示:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

不过,我目前的这个资源(

Aim_Space_Ironsights动画序列

)是一个瞄准方向只对应一帧,因此用来混合的动画都是单帧的(即虽然只有一帧,但资源类型不是姿势,而是动画序列)。

下面创建9个方向的单帧动画:

1.1 复制

先将

Aim_Space_Ironsights

复制出9份来,并分别以方向来命名:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果
1.2 保留需要的姿势帧删除其他所有帧

各个方向的帧在

Aim_Space_Ironsights

中在:

方向
Aim_Center_Center
Aim_Center_Up 10
Aim_Center_Down 20
Aim_Left_Center 30
Aim_Left_Up 40
Aim_Left_Down 50
Aim_Right_Center 60
Aim_Right_Up 70
Aim_Right_Down 80

例如对于

Aim_Center_Down

,所做的操作如下:

1) 打开

Aim_Center_Down

2) 选择到第20帧

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

3) 右键,点移除帧0到帧20之间的帧

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

4) 回到0帧,右键点移除帧1到帧68之间的帧

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果
1.3 批量设置属性

接下来需要设置 Additive 动画相关的属性。一共有九个,批量设置会更快。

选中9个动画,右键选择通过属性矩阵进行批量编辑

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

随后编辑属性:

  • 附加动画类型(Additive Anim Type) 更改为 模型空间(Mesh Space)
  • 基础姿势类型(Base Pose Type) 更改为 选定动画帧(Selected animation frame)
  • 基础姿势动画(Base Pose Animation)选择

    ThirdPersonIdle

    ,记住现在的选择。
学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

2.创建瞄准偏移资源

2.1创建

右键骨架选择创建目标偏移(我翻译成瞄准偏移)。这将从这个骨架创建一个瞄准偏移资源。

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

命名为

ShootingAimOffset

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果
2.2编辑

双击打开资源,在细节面板中设置水平和垂直轴的名字与值范围:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

将之前做的9个单帧动画拖入到对应位置:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果
2.3预览

在 资源详情(Asset Details) 面板中,将 附加设置(Additive Settings) 下的预览基础姿势(Preview Base Pose) 选项设置为

ThirdPersonIdle

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

可预览:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

3. 动画蓝图的 AnimGraph

上一篇《学习UE4动画蓝图:创建一个射击姿势并使用》中的设计姿势节点(Aim_Center_Center : Pose_0)将由

ShootingAimOffset

取代(只要将瞄准偏移资源拖入就可以创建节点):

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

另外需要注意的是:

  • 其输入的姿势应该是

    ThirdPersonIdle

  • Yaw和Pitch的值是变量,将会在之后的事件图表中设置

4. 动画蓝图的 事件图表

在事件图表中添加设置瞄准角度的内容:

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

需要注意的是:

  • 旋转的偏移是由

    GetControlRotation

    GetActorRotation

    通过

    Delta

    函数计算得来
  • 获得的角度需要

    Clamp

    -90

    90

    之间。

效果

学习UE4动画蓝图:使用AimOffset(瞄准偏移)目标1. 创建9方向的单帧动画序列2.创建瞄准偏移资源3. 动画蓝图的 AnimGraph4. 动画蓝图的 事件图表效果

继续阅读