导语:
通过实现一个小游戏,来学会音频,最后效果
入门
下载启动项目并解压缩。通过导航到项目文件夹并打开SkywardMuffin.uproject来打开项目。
按播放开始游戏。游戏的目标是在不坠落的情况下触摸尽可能多的云。单击鼠标左键跳到第一朵云。
游戏很放松,不是吗?为了强调放松的感觉,你要做的第一件事就是弹奏一些平静的钢琴曲。
玩音乐
转到内容浏览器并导航到音频文件夹。在这里,您将找到本教程中将使用的所有声音。您可以通过将鼠标悬停在他们的图标上然后单击出现的播放图标来收听他们。
播放音乐就像将声音资源拖放到视口中一样简单。但是,音乐只会播放一次。这是因为您需要在资产中手动启用循环。双击S_Music打开它。
将出现一个带有单个详细信息面板的新窗口。转到声波部分并启用循环。
接下来,返回主编辑器,然后将S_Music资产拖放到视口中。
这将创建一个以S_Music作为声源的AmbientSound actor 。该演员将在游戏开始时自动播放S_Music 。
按播放听音乐。17 秒(音乐的长度)后,它将循环播放并再次播放。
接下来,您将在松饼迈出一步时添加声音效果。为此,您将使用动画通知。
什么是动画通知?
动画通知允许您在动画中的特定点触发事件。您可以通过许多不同的方式使用它们。例如,您可以创建一个通知来产生粒子效果。
在这个游戏中,松饼一落地就会出现重启按钮。但是,使用通知,您可以让它出现在死亡动画的结尾。
在本教程中,您将动画通知在每只脚触地时播放声音。
创建动画通知
导航到Characters\Muffin文件夹,然后打开SK_Muffin_Walk。这将打开动画编辑器。
在视口下方的面板中,您将看到一个名为Notifies的区域。浅灰色区域是Notify Track。您将在此处创建和管理通知。
第10帧和第22 帧是每只脚着地的时间,因此您需要在这两个点上创建通知。要创建通知,请右键单击通知轨道并选择添加通知\播放声音。这将创建一个名为PlaySound的通知。
接下来,您需要定位 Notify 以便它出现在第10 帧上。
移动动画通知
很难知道将通知移动到哪里,因为通知轨道不指示第10 帧的位置。但是,您可以使用时间轴显示标记。
首先,转到位于面板底部的时间轴。当Current Frame为10时,拖动单击红色播放头并释放。一定要先暂停!
现在,通知轨道将有一条红线指示播放头的位置。
拖动播放声音通知并在与红线对齐时释放。
接下来,您需要告诉通知播放脚步声。
播放脚步声
左键单击PlaySound以选择它,然后转到详细信息面板。在Anim Notify部分,将Sound设置为S_Footstep。
接下来,对另一只脚重复该过程。请执行下列操作:
- 创建另一个播放声音通知
- 将通知移动到第21 帧
- 将通知的声音设置为S_Footstep
现在,每当行走动画到达第10帧和第21 帧时,通知将触发并播放S_Footstep声音。
关闭SK_Muffin_Walk,然后返回主编辑器。按播放并开始四处走动以听到脚步声。
反复聆听脚步声后,玩家可能会注意到一些东西。每次都是一样的音效!要是每次都能有办法改变声音就好了。
在下一节中,您将在玩家触摸云时播放声音效果。但是这一次,您每次使用Sound Cue都会改变声音。
什么是声音提示?
Sound Cue 是一种资产,可让您操纵多种声音并将它们组合起来。然后,您可以将 Sound Cue 视为它自己的声音。在任何可以使用常规声音的地方,您都可以使用 Sound Cue。
下面是一个使用Concatenator连续播放三个声音的 Sound Cue 示例:
如果改为使用Random节点,则可以在每次播放 Sound Cue 时选择随机声音。
在本教程中,您将创建并使用 Sound Cue 来更改声音的音高。
创建声音提示
首先,导航回音频文件夹。您将使用S_Pop作为音效,因此您需要为其创建 Sound Cue。为此,请右键单击S_Pop并选择Create Cue。
这将创建一个名为S_Pop_Cue的新声音提示资产。双击S_Pop_Cue在Sound Cue 编辑器中打开它。
注意:此编辑器与材质编辑器非常相似,因此我不会介绍它。如果您对材质编辑器不熟悉,可以在入门教程中了解它。
在图中,您将看到两个节点:Wave Player: S_Pop和Output。Sound Cue 将播放您连接到输出节点的任何内容(在这种情况下,它将播放S_Pop声音)。您可以通过转到工具栏并单击播放提示来收听声音提示。
接下来,您将学习如何改变声音的音高。
改变声音的音高
要更改声音的音高,您需要使用调制器节点。创建一个并像这样连接它:
现在,您需要定义音高可以改变多少。选择调制器节点,然后转到详细信息面板。您将看到两个与音高相关的字段:Pitch Min和Pitch Max。小于 1 的值表示可以降低音高,反之亦然。值 1 表示音高将保持不变。
对于本教程,音高应该只能提高。将Pitch Min设置为1.0并将Pitch Max设置为2.0。
现在,每次播放 Sound Cue 时,声音的音高都会介于原始音高和原始音高的两倍之间。
接下来,您需要在播放器触摸云时播放 Sound Cue。
播放声音提示
返回主编辑器并导航到Blueprints文件夹。打开BP_Cloud,然后打开CloudTouched函数。每当玩家接触到云时,都会执行此功能,因此它是播放 Sound Cue 的理想场所。
您可以使用两个节点来播放声音:
- Play Sound 2D:播放没有任何衰减或空间化的声音(您将在本教程后面了解这些内容)。将此节点用于游戏世界中不“存在”的声音,例如音乐和 UI 声音。
- 在位置播放声音:在 3D 空间中的某个位置播放声音。如果您希望声音根据玩家的位置和方向而改变,请使用此节点。
既然云存在于游戏世界中,那么声音也应该存在于游戏世界中。在节点链的末尾添加一个Play Sound at Location节点。
之后,将Sound设置为S_Pop_Cue。
现在,每当玩家触摸云时,S_Pop_Cue就会播放。
单击编译,然后返回主编辑器。按播放并开始玩游戏。每次触摸云时,您都应该听到相同的声音,但音高不同。
声音的音高发生变化,但听起来不像是在 3D 空间中。要启用此功能,您需要对声音进行空间化。
什么是空间化?
空间化是为了给人以音频存在于 3D 空间中的印象而执行的过程。来自左侧的声音将在左耳中听到,反之亦然。
除了增加沉浸感之外,空间化还可以帮助游戏玩法。在《守望先锋》和《反恐精英》等竞技游戏中,空间化音频可以帮助玩家辨别其他玩家的位置。
在本教程中,您将使用空间化根据云的位置平移云的声音。
启用空间化
有两种方法可以为 Sound Cue 启用空间化:
- 声音衰减资产:此资产包含与衰减和空间化相关的设置。您可以将此资产分配给不同的声音,以确保它们都具有相同的设置。
- 覆盖衰减:您可以在声音提示中指定设置,而不是使用声音衰减资产。这允许您为各个声音提示创建设置。
对于本教程,您将使用第二种方法。打开S_Pop_Cue,然后转到 Details 面板。找到Attenuation部分并启用Override Attenuation。这将启用衰减覆盖部分。
要检查是否启用了空间化,请单击Attenuation Overrides旁边的箭头。Spatialize设置将指示您的声音是否已空间化。
设置就是这样,继续关闭S_Pop_Cue。接下来,您需要指定声音在 3D 空间中的位置。
在 3D 空间中播放声音
打开BP_Cloud,然后创建一个GetActorLocation节点。然后,将其连接到Play Sound at Location节点的Location引脚。
现在,声音将在与云相同的位置播放。
单击编译,然后返回主编辑器。按播放并开始触摸云。您应该听到看似来自不同位置的声音。
注意:默认情况下,摄像头是音频监听器。这意味着您将从相机的角度听到声音。如果您想更改哪个演员是听众,您可以使用Set Audio Listener Override节点。
你可能已经注意到有些云有雨。但如果它听起来不像在下雨,那它就不是真正的雨云!接下来,您将添加雨声并使用衰减来根据距离改变其音量。
添加雨声
您可以使用Audio组件代替使用节点播放雨声。使用组件的优点之一是它会在云的位置自动播放。
打开BP_Cloud,然后转到 Components 面板。添加一个新的Audio组件并将其命名为RainAudio。
转到详细信息面板并找到声音部分。将声音更改为S_Rain。
正常的云不应该播放雨声。这意味着您需要为正常的云停用RainAudio。为此,请向下滚动到Activation部分并禁用Auto Activate。
现在,您需要为雨云激活RainAudio。一个很好的地方是EnableRain函数。如果云应该是雨云,则执行此函数。打开EnableRain函数并添加突出显示的节点:
接下来,您需要启用衰减并定义衰减设置
设置衰减
转到 Components 面板并选择RainAudio。转到详细信息面板并转到衰减部分。启用覆盖衰减设置。
衰减设置复制了声音如何随着距离而失去音量。在Attenuation Overrides区域下,您将使用两个设置:
- 半径:在音量开始减弱之前玩家可以到达的最大距离
- 衰减距离:玩家在声音变为静音之前需要达到的距离。该距离是半径之外的。
看看下面的例子:
当玩家位于内圈(由Radius定义)内时,音量为 100%。随着玩家从内圈移动到外圈的边缘(由衰减距离定义),音量衰减到 0%。
对于本教程,将Radius设置为300并将Falloff Distance设置为400。
这意味着当播放器距离声音小于300单位时,声音的音量将为 100%。随着玩家的距离接近700 (300 + 400) 个单位,音量将衰减到 0%。
如果云消失时播放器没有移出衰减范围,声音将被切断。要解决此问题,您可以淡出声音。
淡出声音
切换到事件图表并找到FadeOut事件。您可以通过转到 My Blueprint 面板并转到Graphs部分来执行此操作。双击EventGraph 下列出的FadeOut。
将突出显示的节点添加到节点链的末尾:
FadeOut在玩家触摸云时执行。Timeline ( FadeTimeline ) 节点输出一个值 ( Alpha ),该值在指定的持续时间内从 1 变为 0。通过使用这个值,RainAudio的音量将会减弱。
注意:您可以双击时间轴节点将其打开并查看其工作原理。如果您想了解有关Timelines的更多信息,请查看官方文档。
您需要在S_Rain中更改一项设置,然后才能听到它的实际效果。当声音的音量为 0% 时,它将停止播放。由于您在音频开始时超出了收听范围,因此S_Rain的音量将为 0%。当您进入聆听范围时,您将听不到任何声音。
您可以使用“静音时虚拟化”设置来解决此问题。此设置将始终播放声音,无论其音量如何。
单击编译,然后关闭BP_Cloud。导航到Audio文件夹并打开S_Rain。转到Sound部分并启用Virtualize when Silent。
现在,即使没有声音, S_Rain也会播放。关闭S_Rain,然后返回主编辑器。按下播放键,进入雨云范围内即可听到雨声。
在最后一部分中,您将使用Sound Classes和Sound Mixes控制声音的音量。
声音类和混音
Sound Class 是一种对多个声音进行分组的简单方法。例如,您可以将一个类中的所有音乐和音效分组到另一个类中。
要在游戏过程中调整 Sound Class 的属性(音量、音高等),您需要使用 Sound Mix。混音基本上是一个表格,表格中的每个条目都是一个声音类。每个条目都包含声音类应具有的调整。
以下是混音可能包含的示例:
通过使用上面的 Sound Mix,Music类中的每个声音都会以一半的音量播放。效果类中的每个声音的音高都会翻倍。
首先,您将创建声音类。
创建声音类
在本教程中,您将独立调整音乐和效果的音量。这意味着您将需要两个声音类。在内容浏览器中,单击Add New并选择Sounds\Sound Class。将声音类重命名为S_Music_Class。
创建另一个声音类并将其命名为S_Effects_Class。
接下来,您需要将每个声音分配给一个声音类。首先,你会为音乐做这件事。打开S_Music,然后找到声音部分。将声音类更改为S_Music_Class。
完成后,关闭S_Music。
接下来是音效。您可以一次完成所有操作,而不是打开每个声音并分配一个声音类。首先,选择以下资产:
- S_足迹
- S_Pop_Cue
- S_Rain
然后,右键单击所选资产之一。通过 Property Matrix选择Asset Actions\Bulk Edit。这将在属性矩阵编辑器中打开资产。
属性矩阵编辑器允许您同时编辑常用属性。
转到 Details 面板并展开Sound分支。要选择声音类,请单击声音类右侧的网格图标。
选择S_Effects_Class,然后关闭属性矩阵编辑器。
所有的声音现在都在它们相应的声音类中。接下来,您将创建一个混音并使用蓝图对其进行调整。
创建和调整混音
在内容浏览器中,单击Add New并选择Sounds\Sound Mix。将混音重命名为S_Volume_Mix。
要控制每个声音类的音量,您将使用滑块。我已经创建了一个带有两个滑块的小部件供您使用。导航到UI文件夹并打开WBP_Options。
要调整音量,您需要使用这些滑块中的值并将其输入到混音中。您将首先为音乐执行此操作。
切换到图表模式,然后转到我的蓝图面板。在变量部分下,选择MusicSlider。转到 Details 面板并单击On Value Changed旁边的按钮。
这将创建On Value Changed (MusicSlider)事件。每当您移动滑块手柄时都会触发此事件。
现在,您需要在 S_Volume_Mix 中设置S_Music_Class的音量。为此,您需要使用Set Sound Mix Class Override节点。此节点允许您指定混音和声音类。如果 Sound Class 不在 Sound Mix 中,它将被添加。如果它已经在混音中,它将更新。
添加一个Set Sound Mix Class Override节点并设置以下选项:
- 在混音修改器中: S_Volume_Mix
- 在声音类中: S_Music_Class
- Fade in Time: 0(这将确保音量调整是即时的)
接下来,像这样连接您的节点:
重复EffectsSlider的步骤。将In Sound Class引脚更改为S_Effects_Class。
现在,每当滑块的值发生变化时,S_Volume_Mix都会调整相关 Sound Class 的音量。
在所有这些工作之前,您需要激活混音。
激活混音
对于这种情况(使用 UI 控制音量),最好在游戏开始时激活混音。这样 Sound Class 将自动使用 Sound Mix 中的音量调整。但是,为了简单起见,您将在小部件中激活混音。
创建一个Event Pre Construct节点。这类似于蓝图中的Event BeginPlay节点。
要激活混音,您需要使用Push Sound Mix Modifier节点。创建一个并将其连接到Event Pre Construct。然后,将In Sound Mix Modifier设置为S_Volume_Mix。
这将在WBP_Options生成时激活S_Volume_Mix。
单击编译,然后关闭WBP_Options。按播放,然后按M键调出滑块。调整滑块以影响每个声音类的音量。