六一的部落格


关关难过关关过,前路漫漫亦灿灿。




说明

  • 游戏角色视角水平旋转时, 身体会跟随; 垂直方向旋转时, 缺乏相应动画
  • 使用瞄准偏移资产, 游戏角色视角垂直旋转时, 显示相应动画
  • 游戏角色视角垂直旋转即Camera组件垂直旋转, 可以用来校准处垂直方向上的瞄准偏移

概览

  • 导入AimOffset相关动画
  • 绘制Camera组件的前进向量
  • 创建瞄准偏移资产
  • 在动画蓝图中使用瞄准偏移资产校准垂直方向上的动画

绘制Camera组件的前进向量

虚幻编辑器

函数
GetBaseAimRotation 通过Pawn的Controller返回游戏角色CameraComponent的旋转分量
GetForwardVector 从FRotator获取前进分量
GetActorLocation 获取游戏角色位置

在蓝图中获取Camera组件旋转分量

ABP_BaseCharacter > EventGraph


保存旋转分量到变量, AnimGraph中会用到

  1. Promote to Variable


  2. 变量列表出现新变量, 命名为AimRotation



完整实现



绘制Camera组件前进方向

-
起点 游戏角色位置
偏移 放大的Camera组件前进向量
终点 起点 + 偏移
  1. 乘法输入转为float: 右键另一个输入


  2. 使用DrawDebugLine绘制

    线段参数
    Duration 0.0
    Thickness 3.0
    Line Color



瞄准偏移资产

Aim Offset

  1. 专门用于瞄准
  2. 有常规和1D两种, 和混合空间一样
  3. 常规AimOffset有两个轴, 覆盖瞄准在水平和垂直方向的偏移
  4. 需要绑定骨骼
  5. 命名前缀为AO_

使用瞄准偏移资产


导入AimOffset相关动画

之前导入的动画资产打开导致程序挂死, 不用亦不删除, 从ShooterGame单独导入


使用到的动画资产

这些动画倾向于作为姿势, 由少数帧组成

-
AimOffsetFwd
AimOffsetUp
AimOffsetDown
AimOffsetLeft
AimOfsetLeftDown
AimOffsetLeftUp
AimOffsetRight
AimOfsetRightDown
AimOffsetRightUp

从ShooterGame迁移

ShooterGame

  1. 选中Content/Animations/TTP_Animations,右键,选择Migrate


  2. 仅勾选AimOffset相关动画,共9个



放入指定位置并绑定骨骼

ShootThemUp

  1. 重命名Content/Animations/TTP_Animations为AimOffsetAnimation,移动到Content/ExternalContent目录下, 删除Content/Animations

  2. 动画资产全选打开, 为其绑定骨骼HeroTPP_Skeleton

  3. 为文件夹设置颜色



创建瞄准偏移资产

Aim Offset

  1. Content/Player/Animations文件夹空白处右键, 选择AimOffset


  2. 选择骨骼 HeroTPP_Skeleton

  3. 命名为AO_BaseCharacter


配置瞄准偏移资产

AO_BaseCharacter

双击打开, 面板和混合空间一样


配置轴

- Name 范围
水平 Yaw -90 ~ 90
垂直 Pitch -90 ~ 90



要求Asset Browser有以下动画

-
AimOffsetFwd
AimOffsetUp
AimOffsetDown
AimOffsetLeft
AimOfsetLeftDown
AimOffsetLeftUp
AimOffsetRight
AimOfsetRightDown
AimOffsetRightUp

调整动画资产参数以兼容AimOffset资产

使得这些动画可以附加到已有姿势上

依次打开9个动画资产, 做如下设置:

  1. Asset Details > Additive Settings, 将Additive Anim Type设置为Mesh Space

    AnimOffset只和该类型动画兼容
  2. Base Pose Type默认为Selected animation frame
  3. 选择动画Idle



使用AimOffset相关动画

将9个动画拖入到指定位置, 调整座标

(Yaw, Pitch)
AimOffsetFwd (0, 0)
AimOffsetUp (0, 90)
AimOffsetDown (0, -90)
AimOffsetLeft (-90, 0)
AimOfsetLeftDown (-90, -90)
AimOffsetLeftUp (-90, 90)
AimOffsetRight (90, 0)
AimOfsetRightDown (90, -90)
AimOffsetRightUp (90, 90)
  1. 动画座标配置



  2. 效果



说明

  1. AO_BaseCharacter在水平和垂直方向都有输入, 本节中, 只配置垂直输入
  2. 对于玩家操控的游戏角色, 旋转视角时, 在水平和垂直方向都有动画; 玩家不需要看到游戏角色的侧面旋转
  3. 如果希望AI的旋转更写实, 需要配置瞄准偏移的水平输入

在动画蓝图中使用瞄准偏移资产

ABP_BaseCharacter > AnimGraph

计算运动姿势之后, 添加瞄准偏移

  1. 将AO_BaseCharacter拖入AnimGraph, Locomotion作为其输入, 输出作为Slot的输入


  2. 可以调试AO_BaseCharacter的(Yaw, Pitch), 编译后, 在窗口检视Idle姿势在该设置下的AimOffset效果

    -
    (90, 0) 右转
    (90, 45) 右下
  3. 可以调试Velocity, 查看运动时的瞄准偏移效果

  4. 获取AimRotation变量, 使用Pitch分量(垂直); Camera组件旋转的水平分量与侧面动画不一致, 不能用作Yaw的输入



查看

武器跟随游戏角色在垂直方向旋转, 射击瞄准相较之前自然一些


瞄准偏移



说明

  • 游戏角色视角水平旋转时, 身体会跟随; 垂直方向旋转时, 缺乏相应动画
  • 使用瞄准偏移资产, 游戏角色视角垂直旋转时, 显示相应动画
  • 游戏角色视角垂直旋转即Camera组件垂直旋转, 可以用来校准处垂直方向上的瞄准偏移

概览

  • 导入AimOffset相关动画
  • 绘制Camera组件的前进向量
  • 创建瞄准偏移资产
  • 在动画蓝图中使用瞄准偏移资产校准垂直方向上的动画

绘制Camera组件的前进向量

虚幻编辑器

函数
GetBaseAimRotation 通过Pawn的Controller返回游戏角色CameraComponent的旋转分量
GetForwardVector 从FRotator获取前进分量
GetActorLocation 获取游戏角色位置

在蓝图中获取Camera组件旋转分量

ABP_BaseCharacter > EventGraph


保存旋转分量到变量, AnimGraph中会用到

  1. Promote to Variable


  2. 变量列表出现新变量, 命名为AimRotation



完整实现



绘制Camera组件前进方向

-
起点 游戏角色位置
偏移 放大的Camera组件前进向量
终点 起点 + 偏移
  1. 乘法输入转为float: 右键另一个输入


  2. 使用DrawDebugLine绘制

    线段参数
    Duration 0.0
    Thickness 3.0
    Line Color



瞄准偏移资产

Aim Offset

  1. 专门用于瞄准
  2. 有常规和1D两种, 和混合空间一样
  3. 常规AimOffset有两个轴, 覆盖瞄准在水平和垂直方向的偏移
  4. 需要绑定骨骼
  5. 命名前缀为AO_

使用瞄准偏移资产


导入AimOffset相关动画

之前导入的动画资产打开导致程序挂死, 不用亦不删除, 从ShooterGame单独导入


使用到的动画资产

这些动画倾向于作为姿势, 由少数帧组成

-
AimOffsetFwd
AimOffsetUp
AimOffsetDown
AimOffsetLeft
AimOfsetLeftDown
AimOffsetLeftUp
AimOffsetRight
AimOfsetRightDown
AimOffsetRightUp

从ShooterGame迁移

ShooterGame

  1. 选中Content/Animations/TTP_Animations,右键,选择Migrate


  2. 仅勾选AimOffset相关动画,共9个



放入指定位置并绑定骨骼

ShootThemUp

  1. 重命名Content/Animations/TTP_Animations为AimOffsetAnimation,移动到Content/ExternalContent目录下, 删除Content/Animations

  2. 动画资产全选打开, 为其绑定骨骼HeroTPP_Skeleton

  3. 为文件夹设置颜色



创建瞄准偏移资产

Aim Offset

  1. Content/Player/Animations文件夹空白处右键, 选择AimOffset


  2. 选择骨骼 HeroTPP_Skeleton

  3. 命名为AO_BaseCharacter


配置瞄准偏移资产

AO_BaseCharacter

双击打开, 面板和混合空间一样


配置轴

- Name 范围
水平 Yaw -90 ~ 90
垂直 Pitch -90 ~ 90



要求Asset Browser有以下动画

-
AimOffsetFwd
AimOffsetUp
AimOffsetDown
AimOffsetLeft
AimOfsetLeftDown
AimOffsetLeftUp
AimOffsetRight
AimOfsetRightDown
AimOffsetRightUp

调整动画资产参数以兼容AimOffset资产

使得这些动画可以附加到已有姿势上

依次打开9个动画资产, 做如下设置:

  1. Asset Details > Additive Settings, 将Additive Anim Type设置为Mesh Space

    AnimOffset只和该类型动画兼容
  2. Base Pose Type默认为Selected animation frame
  3. 选择动画Idle



使用AimOffset相关动画

将9个动画拖入到指定位置, 调整座标

(Yaw, Pitch)
AimOffsetFwd (0, 0)
AimOffsetUp (0, 90)
AimOffsetDown (0, -90)
AimOffsetLeft (-90, 0)
AimOfsetLeftDown (-90, -90)
AimOffsetLeftUp (-90, 90)
AimOffsetRight (90, 0)
AimOfsetRightDown (90, -90)
AimOffsetRightUp (90, 90)
  1. 动画座标配置



  2. 效果



说明

  1. AO_BaseCharacter在水平和垂直方向都有输入, 本节中, 只配置垂直输入
  2. 对于玩家操控的游戏角色, 旋转视角时, 在水平和垂直方向都有动画; 玩家不需要看到游戏角色的侧面旋转
  3. 如果希望AI的旋转更写实, 需要配置瞄准偏移的水平输入

在动画蓝图中使用瞄准偏移资产

ABP_BaseCharacter > AnimGraph

计算运动姿势之后, 添加瞄准偏移

  1. 将AO_BaseCharacter拖入AnimGraph, Locomotion作为其输入, 输出作为Slot的输入


  2. 可以调试AO_BaseCharacter的(Yaw, Pitch), 编译后, 在窗口检视Idle姿势在该设置下的AimOffset效果

    -
    (90, 0) 右转
    (90, 45) 右下
  3. 可以调试Velocity, 查看运动时的瞄准偏移效果

  4. 获取AimRotation变量, 使用Pitch分量(垂直); Camera组件旋转的水平分量与侧面动画不一致, 不能用作Yaw的输入



查看

武器跟随游戏角色在垂直方向旋转, 射击瞄准相较之前自然一些