Wwise Unity Integration

目录

衰减球体

我们已经将 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。

  1. 在 Unity 菜单栏中,依次转到 Audiokinetic > Certification > 301 > Lesson 2,然后选择 Attenuation Spheres

  2. 在 Hierarchy 中,转到 L2_2B - Village Environment Scene,然后展开 Wwise 并选中 Windmill 游戏对象。

    在创建新的 Wwise 工程时,Attenuation ShareSet 中的 Max Distance 值并没有作为元数据包含在 SoundBank(音频包)中。在《WAG》中,作为元数据包含在了 SoundBank 中。不过,最好在继续之前确认一下。

  3. 在 Wwise 菜单栏中,依次选择 Project > Project Settings(工程 > 工程设置)。

  4. 选中 SoundBanks(音频包)选项卡。

  5. 在 SoundBanks 选项卡中,确保启用 Max Attenuation(最大衰减)。

    现在,Wwise Unity Integration 便可获取所有 Attenuation ShareSet 中的全部 Max Distance,并使用其来判断 Attenuation Sphere 的大小。

    [技巧]

    您可以通过调用 AkWwiseProjectInfo.GetData().GetEventMaxAttenuation() 函数,来获取 Max Distance 并将其用于自定义脚本。

  6. 在 Project Settings 中,单击 OK(确定)。

  7. 搜索 Windmill,然后选中 Ambient_Windmill Blend Container。

  8. 在 Positioning(定位)选项卡的 Attenuation(衰减)分区,单击 Edit(编辑)。

    那么,应该把它设成多大呢?当然,我们可以在 Unity 和 Wwise 之间反复切换并查看结果,以此来决定将该值增大多少。不过为了更加精确一些,最好先设置一个临时的值。然后,在 Unity 中调整 Sphere Collider 的大小以囊括所需 Attenuation 区域。最后,返回 Wwise 并更新 Max Distance 值以与 Sphere Collider 的半径保持一致。

  9. 在 Attenuation Editor 的 Max distance 字段中,将值设为 35。

  10. 在 Wwise Picker 中,单击 Generate SoundBanks

  11. 使用 Hand Tool(单击 Q)来调节 Scene 视图,直到同时看到 WindmillMain Camera

  12. 在 Unity Inspector 中,转到 Sphere Collider 并将 Radius 设为 35

    现在,我们可以在 Scene 视图中看到 Attenuation Sphere 边缘处的绿线。只要不缩放游戏对象(增大或减小),Sphere Collider 的 Radius 就会直接转换为 Attenuation 的 Max distance 属性。

  13. 在绑定的 AkAmbient 组件中,将 Show Attenuation Sphere 属性设为 Current_Event_Only

    在选择 Current_Event_Only 后,会在场景中看到代表 Distance Attenuation 的 Max Distance 值的红色球体。

    我们注意到,球体并没有延伸到玩家的起点位置(Main Camera 所在位置)。所以,玩家应该完全听不到 Windmill 声音。

    通过增大 Sphere Collider 的 Radius,我们可以直观地调节 Attenuation 所需的距离,使其延伸到 Player 所在区域。

  14. 单击并按住 Radius 属性,然后向右拖动,直到绿色 Sphere Trigger 延伸到 Player 所在区域。

    一旦找到合适的值,我们就可以将其用在 Attenuation ShareSet 的 Max distance 字段中。

  15. 切换到 Wwise,然后在 Attenuation Editor 中将 Max distance 设为新的 Sphere Collider Radius 值(舍入取整)。

    鉴于我们只是为了利用 Sphere Collider 获取一个临时的测量值,现在来将其重新设为 1。

  16. 在 Unity Inspector 中,找到 Sphere Collider 并将 Radius 属性设为 1

    最后,我们需要获取 SoundBank 包含的最新修改。

  17. 在 Wwise Picker 中,单击 Generate SoundBanks

    在 Unity 的 Wwise Picker 中生成 SoundBank 时,会同时将 Wwise Project 包含的最新信息更新到 Unity 工程中。

我们注意到,现在 Attenuation Sphere 增大了,Player 的起点位置被包含在了球体内。

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


此页面对您是否有帮助?