《UE5_C++多人TPS完整教程》学习笔记48 ——《P49 瞄准偏移(Aim Offset)》
本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P49 瞄准偏移(Aim Offset)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
文章目录
- P49 瞄准偏移(Aim Offset)
- 49.1 制作瞄准偏移的单帧动画
- 49.2 使用属性矩阵批量编辑单帧动画
- 49.3 创建瞄准偏移蓝图类
- 49.4 Summary
P49 瞄准偏移(Aim Offset)
本节课我们将为人物角色创建瞄准偏移,它允许我们在移动鼠标时让人物角色瞄准各种方向。
49.1 制作瞄准偏移的单帧动画
-
在虚幻引擎内容浏览器的目录 “
/Game/Contents/Blueprints/Character/Animation
” 下新建文件夹 “AimOffsets
”,用于存储朝各个方向瞄准的动画姿势。 -
复制动画资产 “
Aim_Space_Hip
” 到文件夹 “AimOffsets
” 中,这个动画资产包含了人物角色多个方向武器瞄准混合动画姿势;接着,将复制好的副本重命名为 “AO_CC
”。
-
打开 “
AO_CC
” 动画序列编辑器,在资产编辑器中 移除帧1到帧87之间的帧,仅保留第 1 帧,这个单帧动画即人物角色面向前方水平瞄准的动画姿势。
-
复制动画资产 “
Aim_Space_Hip
” 到文件夹 “AimOffsets
” 中,将复制好的副本重命名为 “AO_CU
”,在 “AO_CU
” 动画序列编辑器的资产编辑器中 移除帧1到帧10之间的帧,接着再 移除帧1到帧77之间的帧,这个单帧动画即人物角色面向前方垂直向上瞄准的动画姿势。
-
然而,当我们在资产编辑器中播放该动画时,可以发现在虚幻引擎 5.0.3 中采用教学视频中的方法制作出的单帧动画 “
AO_CU
” 并不是真的只有一帧,而是包含了两帧,即人物角色面向前方垂直向上瞄准后又在动画的末尾面向前方水平瞄准,播放时相当鬼畜。如果在 “AO_CU
” 的资产编辑器中尝试移除第 2 帧,依然无法得到仅有面向前方垂直向上瞄准的单帧动画。
-
因此,笔者参考了《【UE5自制吃鸡版原神教程】06-aimOffset叠加瞄准指向动作.mp4》中的方法(笔者没有像教学视频中尝试在虚幻引擎 4.27 中进行动画序列剪辑),以获取真正的单帧动画。
-
在 “
AimOffsets
” 中新建文件夹 “HipAO
”,将 “AO_CC
” 移动到 “HipAO
” 中。随后,重新复制 “Aim_Space_Hip
” 到 “HipAO
” 中,在副本的资产编辑器中定位到第 10 帧,然后再上方工具栏中选中 “创建资产”,接着选中 “创建动画”,然后选择 “当前姿势”,将动画资产命名为 “AO_CU
”,保存在 “HipAO
” 中。
-
当我们在 “
AO_CU
” 资产编辑器中播放该动画时,可以发现它是真正的单帧动画,并不会在动画末尾包含人物角色面向前方水平瞄准的帧。
-
仿照上述步骤,分别在副本 “
Aim_Space_Hip
” 的第 20 帧生成面向前方垂直向下瞄准的 “AO_CD
”、第 30 帧生成面向左边水平瞄准的 “AO_LC
”、第 40 帧生成面向左边垂直向上瞄准的 “AO_LU
”、第 50 帧生成面向左边垂直向下瞄准的 “AO_LD
”、第 60 帧生成面向右边水平瞄准的 “AO_RC
”、第 70 帧生成面向右边垂直向上瞄准的 “AO_RU
”、第 80 帧生成面向右边垂直向下瞄准的 “AO_RD
”。
-
在 “
AimOffsets
” 中新建文件夹 “AimAO
”,复制动画资产 “Aim_Space_IronSights
” 到 “AimAO
” 中,然后通过上述方法获取人物角色的多个单帧动画,包括面向前方水平瞄准 “Aim_AO_CC
” 、面向前方垂直向上瞄准的 “Aim_AO_CU
”、面向前方垂直向下瞄准的 “Aim_AO_CD
”、面向右边水平瞄准的 “Aim_AO_RC
”、面向右边垂直向上瞄准的 “Aim_AO_RU
”、面向右边垂直向下瞄准的 “Aim_AO_RD
”、面向左边水平瞄准的 “Aim_AO_LC
”、面向左边垂直向上瞄准的 “Aim_AO_LU
”、面向左边垂直向下瞄准的 “Aim_AO_LD
”。
-
将生成的单帧动画全部保存。
49.2 使用属性矩阵批量编辑单帧动画
-
瞄准偏移的主要设计理念是,让动画叠加在现有的某 “基础动画” 上,通常就是 “向前瞄准”动画。在此基础上,我们就可以在瞄准偏移(Aim Offset)图表中实现各种叠加动画姿势(Additive animations),所需动画姿势的数量取决于人物角色需要的动作。因此,我们分别复制 “
AO_CC
” 和 “Aim_AO_CC
”,将副本重命名为 “Zero_Pose
” 和“Aim_Zero_Pose
”,并将所有动画姿势保存。 -
选择 “
HipAO
” 中的九个单帧动画,单机鼠标右键,在弹出的菜单栏中选择 “资产操作”,接着选择 “通过属性矩阵进行批量编辑”。
-
在属性矩阵窗口的 “网格” 面板全选单帧动画,随后在右侧 “显示” 面板中,将 “Additive Settings” 选项卡的 “Additive动画类型”(Additive Anim Type)设置为 “网格体空间”(Mesh Space),将 “基础姿势类型”(Base Pose Type) 设置为 “选择的动画帧”(Selected animation frame),将 “基础动画姿势” 设置为 “
Zero_Pose
”。
-
同理,通过属性矩阵对 “
AimAO
” 中的九个单帧动画进行批量编辑,它们的 “基础动画姿势” 为 “Aim_Zero_Pose
”
-
批量编辑完成后,将所有的单帧动画保存。
49.3 创建瞄准偏移蓝图类
-
在 “
/Game/Contents/Blueprints/Character/Animation
” 目录下以 “SK_EpicCharacter_Skeleton
” 为骨骼创建瞄准偏移蓝图类 “HipAimOffset
”。
-
双击进入 “
HipAimOffset
” 动画编辑器,在左侧资产详情面板中,设置 “水平坐标” 的 “名称” 为 “Yaw”,设置其 “最小轴值” 为 -90.0,“最大轴值” 为 90.0;设置 “垂直坐标” 的 “名称” 为 “Pitch”,设置其 “最小轴值” 为 -90.0,“最大轴值” 为 90.0。接着,在 “附加设置”(ADDITIVE SETTINGS)中设置 “预览基础姿势”(Preview Base Pose)为 “Zero_Pose
”。
随后,将 “HipAO
” 中的九个单帧动画放置在下方图表中对应的坐标上:AO_CC
-> (0, 0),AO_CU
-> (0, 90.0),AO_CD
-> (0, -90.0);AO_RC
-> (90.0, 0),AO_RU
-> (90.0, 90.0),AO_RD
-> (90.0, -90.0);AO_LC
-> (-90.0, 0),AO_LU
-> (-90.0, 90.0),AO_LD
-> (-90.0, -90.0)
-
在图表中长按 Ctrl 键并移动鼠标,可以观察到我们的人物角色能朝各个方向进行瞄准。
-
同理,在 “
/Game/Contents/Blueprints/Character/Animation
” 目录下以 “SK_EpicCharacter_Skeleton
” 为骨骼创建瞄准偏移蓝图类 “AimAimOffset
”。双击进入 “AimAimOffset
” 动画编辑器,在左侧资产详情面板中,设置 “水平坐标” 的 “名称” 为 “Yaw”,设置其 “最小轴值” 为 -90.0,“最大轴值” 为 90.0;设置 “垂直坐标” 的 “名称” 为 “Pitch”,设置其 “最小轴值” 为 -90.0,“最大轴值” 为 90.0。接着,在 “附加设置” 中设置 “预览基础姿势” 为 “Aim_Zero_Pose
”。
随后,将 “AimAO
” 中的九个单帧动画放置在下方图表中对应的坐标上:Aim_AO_CC
-> (0, 0),Aim_AO_CU
-> (0, 90.0),Aim_AO_CD
-> (0, -90.0);Aim_AO_RC
-> (90.0, 0),Aim_AO_RU
-> (90.0, 90.0),Aim_AO_RD
-> (90.0, -90.0);Aim_AO_LC
-> (-90.0, 0),Aim_AO_LU
-> (-90.0, 90.0),Aim_AO_LD
-> (-90.0, -90.0)
49.4 Summary
本节课我们系统性地创建了用于人物角色瞄准的瞄准偏移(Aim Offset)系统。首先,我们依照教学视频,尝试通过剪辑基础动画资产 “Aim_Space_Hip
” 和 “Aim_Space_IronSights
”,以获取人物角色多个方向的单帧瞄准动画姿势,包括水平方向(左、中、右)和垂直方向(上、中、下)的组合,但是在虚幻引擎 5.0.3 中进行测试时我们发现这种剪辑的方法会导致生成的动画并非单帧,而是是两帧。为了解决这个问题,我们依照《【UE5自制吃鸡版原神教程】06-aimOffset叠加瞄准指向动作.mp4》 中的方法,即采用精确定位到帧、保存当前帧动画姿势的方法提取单帧瞄准动画姿势,并分别存储在 “ HipAO
” 和 “AimAO
” 文件夹中。
接着,我们分别复制 “AO_CC
” 和 “Aim_AO_CC
”,并重命名为 “Zero_Pose
” 和 “Aim_Zero_Pose
”,将它们作为 “基础姿势”。随后,使用虚幻引擎强大的属性矩阵批量编辑功能,高效地将所有单帧动画的附加设置统一配置为 “网格体空间” 附加类型,并正确设置其 “基础姿势” 。这一步确保了所有动画都能基于一个共同的参考姿势进行叠加混合,是构建有效瞄准偏移的关键。
然后,我们分别创建了 “HipAimOffset
” 和 “AimAimOffset
” 两个瞄准偏移蓝图,为它们配置了水平轴(名称 “Yaw
”,范围 -90.0到 90.0)和垂直轴(名称 “Pitch
”,范围 -90.0 到 90.0),并将处理好的单帧动画姿势精确放置在坐标网格对应的位置上,例如 “AO_CC
” 在 (0, 0),“AO_RU
” 在 (90.0, 90.0) 等。
最终构建的瞄准偏移系统使得人物角色能够根据 “Yaw
” 和 “Pitch
” 的输入值,动态、平滑地混合出朝任意方向瞄准的动画姿势,为后续实现人物角色精确的瞄准动画奠定了基础。