目录
我们已经将 Ambient_Windmill Event(事件)作为 AkAmbient 组件添加到了场景中,不过最后还有一个细节问题需要解决:调整Windmill(风车)的距离衰减。玩家在位于起点位置时完全听不到 Windmill 声音,因为 Listener Probe 游戏对象 (Player) 处在 Ambient_Windmill Blend Container(混合容器)的最大衰减半径之外。
![]() | |
有关 Wwise Unity Integration 听者 (AkAudioListener) 的详细信息,请参阅“第 9 课”。 |
为此,我们来增大 Ambient_Windmill 的 Attenuation ShareSet(衰减共享集)的 Max Distance(最大距离)。不过,应该增大多少呢?而且,如何确保玩家能够在起点位置听到声音呢?我们可以选择利用 Attenuation Sphere 来解决这些问题。
在 AkAmbient 组件中启用后,Attenuation Sphere 会显示一个球体,其半径由游戏对象的中心延伸到 Wwise 中设定的最大衰减距离。该球体可以直观地显示 Attenuation Editor(衰减编辑器)中设置的 Max Distance。这样方便对照游戏中的对象来评估距离。
接下来,我们将在《Wwise Adventure Game》中启用并配置 Attenuation Sphere。
-
在 Unity 菜单栏中,依次转到 Audiokinetic > Certification > 301 > Lesson 2,然后选择 Attenuation Spheres。
-
在 Hierarchy 中,转到 L2_2B - Village Environment Scene,然后展开 Wwise 并选中 Windmill 游戏对象。
在创建新的 Wwise 工程时,Attenuation ShareSet 中的 Max Distance 值并没有作为元数据包含在 SoundBank(音频包)中。在《WAG》中,作为元数据包含在了 SoundBank 中。不过,最好在继续之前确认一下。
-
在 Wwise 菜单栏中,依次选择 Project > Project Settings(工程 > 工程设置)。
-
选中 SoundBanks(音频包)选项卡。
-
在 SoundBanks 选项卡中,确保启用 Max Attenuation(最大衰减)。
现在,Wwise Unity Integration 便可获取所有 Attenuation ShareSet 中的全部 Max Distance,并使用其来判断 Attenuation Sphere 的大小。
您可以通过调用 AkWwiseProjectInfo.GetData().GetEventMaxAttenuation() 函数,来获取 Max Distance 并将其用于自定义脚本。
-
在 Project Settings 中,单击 OK(确定)。
-
搜索 Windmill,然后选中 Ambient_Windmill Blend Container。
-
在 Positioning(定位)选项卡的 Attenuation(衰减)分区,单击 Edit(编辑)。
那么,应该把它设成多大呢?当然,我们可以在 Unity 和 Wwise 之间反复切换并查看结果,以此来决定将该值增大多少。不过为了更加精确一些,最好先设置一个临时的值。然后,在 Unity 中调整 Sphere Collider 的大小以囊括所需 Attenuation 区域。最后,返回 Wwise 并更新 Max Distance 值以与 Sphere Collider 的半径保持一致。
-
在 Attenuation Editor 的 Max distance 字段中,将值设为 35。
-
在 Wwise Picker 中,单击 Generate SoundBanks。
-
使用 Hand Tool(单击 Q)来调节 Scene 视图,直到同时看到 Windmill 和 Main Camera。
-
在 Unity Inspector 中,转到 Sphere Collider 并将 Radius 设为 35。
现在,我们可以在 Scene 视图中看到 Attenuation Sphere 边缘处的绿线。只要不缩放游戏对象(增大或减小),Sphere Collider 的 Radius 就会直接转换为 Attenuation 的 Max distance 属性。
-
在绑定的 AkAmbient 组件中,将 Show Attenuation Sphere 属性设为 Current_Event_Only。
在选择 Current_Event_Only 后,会在场景中看到代表 Distance Attenuation 的 Max Distance 值的红色球体。
我们注意到,球体并没有延伸到玩家的起点位置(Main Camera 所在位置)。所以,玩家应该完全听不到 Windmill 声音。
通过增大 Sphere Collider 的 Radius,我们可以直观地调节 Attenuation 所需的距离,使其延伸到 Player 所在区域。
-
单击并按住 Radius 属性,然后向右拖动,直到绿色 Sphere Trigger 延伸到 Player 所在区域。
一旦找到合适的值,我们就可以将其用在 Attenuation ShareSet 的 Max distance 字段中。
-
切换到 Wwise,然后在 Attenuation Editor 中将 Max distance 设为新的 Sphere Collider Radius 值(舍入取整)。
鉴于我们只是为了利用 Sphere Collider 获取一个临时的测量值,现在来将其重新设为 1。
-
在 Unity Inspector 中,找到 Sphere Collider 并将 Radius 属性设为 1。
最后,我们需要获取 SoundBank 包含的最新修改。
-
在 Wwise Picker 中,单击 Generate SoundBanks。
在 Unity 的 Wwise Picker 中生成 SoundBank 时,会同时将 Wwise Project 包含的最新信息更新到 Unity 工程中。
我们注意到,现在 Attenuation Sphere 增大了,Player 的起点位置被包含在了球体内。

如此一来,我们就可以精确评估 Unity 中声音的最大衰减范围。