瞄准偏移
2023年8月16日 2024年1月11日
说明
- 游戏角色视角水平旋转时, 身体会跟随; 垂直方向旋转时, 缺乏相应动画
- 使用瞄准偏移资产, 游戏角色视角垂直旋转时, 显示相应动画
- 游戏角色视角垂直旋转即Camera组件垂直旋转, 可以用来校准处垂直方向上的瞄准偏移
概览
- 导入AimOffset相关动画
- 绘制Camera组件的前进向量
- 创建瞄准偏移资产
- 在动画蓝图中使用瞄准偏移资产校准垂直方向上的动画
绘制Camera组件的前进向量
虚幻编辑器
函数 | |
---|---|
GetBaseAimRotation | 通过Pawn的Controller返回游戏角色CameraComponent的旋转分量 |
GetForwardVector | 从FRotator获取前进分量 |
GetActorLocation | 获取游戏角色位置 |
在蓝图中获取Camera组件旋转分量
ABP_BaseCharacter > EventGraph
保存旋转分量到变量, AnimGraph中会用到
-
Promote to Variable
-
变量列表出现新变量, 命名为AimRotation
完整实现
绘制Camera组件前进方向
- | |
---|---|
起点 | 游戏角色位置 |
偏移 | 放大的Camera组件前进向量 |
终点 | 起点 + 偏移 |
-
乘法输入转为float: 右键另一个输入
-
使用DrawDebugLine绘制
线段参数 Duration 0.0 Thickness 3.0 Line Color
瞄准偏移资产
Aim Offset
- 专门用于瞄准
- 有常规和1D两种, 和混合空间一样
- 常规AimOffset有两个轴, 覆盖瞄准在水平和垂直方向的偏移
- 需要绑定骨骼
- 命名前缀为AO_
使用瞄准偏移资产
导入AimOffset相关动画
之前导入的动画资产打开导致程序挂死, 不用亦不删除, 从ShooterGame单独导入
使用到的动画资产
这些动画倾向于作为姿势, 由少数帧组成
- |
---|
AimOffsetFwd |
AimOffsetUp |
AimOffsetDown |
AimOffsetLeft |
AimOfsetLeftDown |
AimOffsetLeftUp |
AimOffsetRight |
AimOfsetRightDown |
AimOffsetRightUp |
从ShooterGame迁移
ShooterGame
-
选中Content/Animations/TTP_Animations,右键,选择Migrate
-
仅勾选AimOffset相关动画,共9个
放入指定位置并绑定骨骼
ShootThemUp
-
重命名Content/Animations/TTP_Animations为AimOffsetAnimation,移动到Content/ExternalContent目录下, 删除Content/Animations
-
动画资产全选打开, 为其绑定骨骼HeroTPP_Skeleton
-
为文件夹设置颜色
创建瞄准偏移资产
Aim Offset
-
Content/Player/Animations文件夹空白处右键, 选择AimOffset
-
选择骨骼
HeroTPP_Skeleton
-
命名为AO_BaseCharacter
配置瞄准偏移资产
AO_BaseCharacter
双击打开, 面板和混合空间一样
配置轴
- | Name | 范围 |
---|---|---|
水平 | Yaw | -90 ~ 90 |
垂直 | Pitch | -90 ~ 90 |
要求Asset Browser有以下动画
- |
---|
AimOffsetFwd |
AimOffsetUp |
AimOffsetDown |
AimOffsetLeft |
AimOfsetLeftDown |
AimOffsetLeftUp |
AimOffsetRight |
AimOfsetRightDown |
AimOffsetRightUp |
调整动画资产参数以兼容AimOffset资产
使得这些动画可以附加到已有姿势上
依次打开9个动画资产, 做如下设置:
Asset Details > Additive Settings, 将Additive Anim Type设置为Mesh Space
AnimOffset只和该类型动画兼容Base Pose Type默认为Selected animation frame
选择动画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) |
-
动画座标配置
-
效果
说明
- AO_BaseCharacter在水平和垂直方向都有输入, 本节中, 只配置垂直输入
- 对于玩家操控的游戏角色, 旋转视角时, 在水平和垂直方向都有动画; 玩家不需要看到游戏角色的侧面旋转
- 如果希望AI的旋转更写实, 需要配置瞄准偏移的水平输入
在动画蓝图中使用瞄准偏移资产
ABP_BaseCharacter > AnimGraph
计算运动姿势之后, 添加瞄准偏移
-
将AO_BaseCharacter拖入AnimGraph, Locomotion作为其输入, 输出作为Slot的输入
-
可以调试AO_BaseCharacter的(Yaw, Pitch), 编译后, 在窗口检视Idle姿势在该设置下的AimOffset效果
- (90, 0) 右转 (90, 45) 右下 -
可以调试Velocity, 查看运动时的瞄准偏移效果
-
获取AimRotation变量, 使用Pitch分量(垂直); Camera组件旋转的水平分量与侧面动画不一致, 不能用作Yaw的输入
查看
武器跟随游戏角色在垂直方向旋转, 射击瞄准相较之前自然一些