《UE5_C++多人TPS完整教程》学习笔记57 ——《P59 脚步声与跳跃声(Footstep And Jump Sounds)》
本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P59 脚步声与跳跃声(Footstep And Jump Sounds)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
文章目录
- P59 脚步声与跳跃声(Footstep And Jump Sounds)
- 59.1 获取声音资产
- 59.2 为跳跃动画添加声音通知
- 59.3 为奔跑动画添加声音通知
- 59.4 为落地动画添加声音通知
- 59.5 Summary
P59 脚步声与跳跃声(Footstep And Jump Sounds)
本节课我们将为多人游戏添加更多声音资产并在动画中放置声音通知(Place sound notifies),这样我们就为人物角色添加脚步声和跳跃声。
59.1 获取声音资产
-
在 Epic Games 启动器中打开 Fab 商城,搜索并下载免费项目 “
Shooter Game
”。
-
回到 Epic Games 启动器,刷新 Fab Library 项目,为新添加的 “
Shooter Game
” 创建工程,引擎版本选择 4.27。
-
打开 “
Shooter Game
”,在内容浏览器中找到 “Footsteps
” 目录,尝试迁移资产 “SCue_FS_Tile
” 至 “Blaster
”,用于制作我们人物角色的脚步声,可以发现在迁移时会出现许多我们不需要的类。
-
双击声音资产 “
SCue_FS_Tile
” 进入 Sound Cue 编辑器, 在左侧 “Sound
” 选项卡下清除我们不需要用到的类 “SC_Footsteps
”,清除后声音仍可正常进行播放,并且我们在进行资产迁移时就不再需要取消勾选我们不需要的类;同时,保留声音衰减(Attenuation)选项卡下的设置。
-
将声音资产 “
SCue_FS_Tile
” 迁移至 “Blaster
” 的 “Contents
” 目录下
-
仿照步骤 3-5,迁移 “
Foley
” 目录下的声音资产 “Scue_Foley_Jump
” 和 “Scue_Foley_Jumpland_Tile
” 至 “Blaster
”,用于制作我们人物角色的跳跃声。
-
打开 Blaster,在内容浏览器中将 “
Sounds
” 文件夹移动至 “Assets
” 目录下。
-
修改衰减设置 “
Footsteps
” 和 “Foley
” 的 “衰减函数”(Attenuation Function) 为 “线性”(Linear),修改 “半径”(Inner Radius)为 400.0,修改 “衰减距离”(Falloff Distance) 为 9600。
59.2 为跳跃动画添加声音通知
-
在动画蓝图 “
BlasterAnim
” 中找到装备武器状态机 “Equipped
” 下跳跃起始状态 “JumpStart
”的动画 “Jump_Rot_Trim
” 和未装备武器状态机 “Unequipped
” 下跳跃起始状态的动画 “EpicCharacter_JumpUp
”,打开它们的动画资产编辑窗口,分别在窗口下方的资产编辑器轨道 1 上,按下鼠标右键,在弹出的 “添加通知…”(Add Notify…)菜单栏中选择 “播放音效”(Play Sound),然后选中新添加的声音通知 “PlaySound
”,在右侧细节面板中修改 “音效”(Sound)为 “Scue_Foley_Jump
”,调整音效播放的起始时间到第 0 帧。
-
保存后进行测试,可以发现人物角色在跳跃时播放了音效 “
Scue_Foley_Jump
”。
-
在动画蓝图的动画中使用声音通知,最酷的一点是当声音触发时在自主控制端和模拟代理端都能听到,我们并不需要担心网络同步的问题,虚幻引擎已经为我们的动画蓝图完成了相关变量的复制。
59.3 为奔跑动画添加声音通知
- 打开 “
Jog_Fwd_Rifle
” 动画资产编辑器窗口,在下方资产编辑器中添加轨道 “2
”。定位到动画中人物角色右脚落地时的第 8 帧和左脚落地的第 19 帧,在轨道 “1
” 中 “添加同步标记”(Add Syn Maker),分别命名为 “RightFoot
” 和 “LeftFoot
”,随后在轨道 “2
” 中分别添加声音通知 “SCue_FS_Tile
” 。同步标记的作用是当我们在混合空间中对不同的动画进行混合时,它会及时地对我们的声音通知进行同步。
基于标识的同步
除了同步组之外,你还可以使用动画序列中的 同步标识(Sync Markers) 同步动画。这样动画的播放将基于沿动画时间轴放置的标识之间的播放相对位置同步。这对于各种混合条件很有用:
- 当常规身体运动的步数不匹配时。例如,混合跑步周期时,右脚接触地面四次,而步行周期脚只接触地面两次。
- 当步幅不同时。例如,将时间严格的行军步行动画混合到时间松散的争夺跑步动画时。
- 当与非循环动画混合时,例如跑步和步行开始和停止。此外,在这种情况下,开始和停止动画应设置为 始终为领导者(Always Leader)。
使用同步标识时要考虑的其他元素是:
- 仅同步组内所有动画共有的标识。例如,如果一个动画缺少"右脚向下"标识,那么在确定该帧的位置时,所有动画都会忽略这些标识。
- 同步组中的动画具有匹配标识时,会自动使用基于标识的同步。否则,系统将回退到正常的长度同步行为。
—— 虚幻引擎官方文档《同步组》
-
定位到第 31 帧和第 42 帧,分别添加已创建的同步标记 “
RightFoot
” 和 “LeftFoot
” 和声音通知 “SCue_FS_Tile
”。
-
保存后进行测试,我们操控人物角色拾起武器后向前奔跑,可以听到左右脚落地的脚步声。
-
回到 “
Jog_Fwd_Rifle
” 动画资产编辑器,按下 Ctrl 或 Shift 键的同时选中所有的同步标记和声音通知,将其复制到 “Jog_Fwd_Lean_L
” 和 “Jog_Fwd_Lean_R
” 的轨道中。
-
进行测试,我们操控人物角色拾起武器后向前倾斜奔跑,可以听到向前倾斜奔跑时左右脚落地的脚步声。这里作者没有给蹲伏行走动画增加声音通知,这可以让我们的人物角色在蹲伏时保持静音,这样我们就可以在多人射击游戏中隐藏我们的脚步声,让敌人无法确定我们的位置信息,从而增加游戏博弈对抗的竞技性。
-
仿照上述步骤,将同步标记和声音通知复制到人物角色未装备武器的行走、奔跑动画以及装备武器后各个方向的奔跑和装备武器、倾斜奔跑、瞄准行走以及转身的动画中。再次进行测试,保证人物角色持枪后朝各个方向奔跑、瞄准行走以及左右转身都有脚步声。
59.4 为落地动画添加声音通知
-
打开 “
EpicCharacter_JumpRun_End
” 动画资产编辑器,添加声音通知 “Scue_Foley_Jumpland_Tile
”。
-
同理,打开 “
Jump_Down_Trim_Rot
” 动画资产编辑器,添加声音通知 “Scue_Foley_Jumpland_Tile
”。
-
进行测试,可以在人物角色在未装备武器和装备武器两种情况下,听到跳跃后落地的声音。
59.5 Summary
本节课我们成功为角色动画添加了丰富的声音效果,大大增强了游戏的沉浸感。首先,我们从虚幻商城 Fab 中下载了 “Shooter Game
” 项目,以获取高质量的脚步声和跳跃声资源。接下来,从“Shooter Game
” 项目迁移了 “SCue_FS_Tile
”(脚步声)、“Scue_Foley_Jump
”(跳跃声)和 “Scue_Foley_Jumpland_Tile
”(跳跃落地声)。紧接着,我们优化了声音衰减设置 “Footsteps
” 和 “Foley
”,将声音衰减函数改为线性,调整内半径和衰减距离,确保声音清晰可听见的同时其传播范围也是合理的。随后,我们为人物角色的动画增加了声音通知,在跳跃起始动画中添加跳跃音效,在奔跑动画中使用 “同步标记”(Sync Markers)技术,确保在不同动画混合时脚步声能够正确同步,为右脚和左脚落地分别添加同步标记和声音通知,并将同步标记复制到人物角色未装备武器的行走、奔跑动画以及装备武器后各个方向的奔跑和装备武器、倾斜奔跑、瞄准行走以及转身的动画中,并进行相应地调整;最后,我们为人物角色未装备武器和装备武器时的跳跃结束动画添加落地音效。值得注意的是,我们特意没有为蹲伏行走动画添加脚步声,这使得玩家在蹲伏状态下能够保持静音,增加了游戏的战术深度和竞技性。
测试结果表明,我们的工作为游戏提供了完整的角色移动音频反馈,且在多人游戏环境下无需额外处理网络同步问题,因为虚幻引擎会自动处理动画蓝图中的声音通知同步。