第 6 课

目录

创建 Aux Environment

上节我们学习了如何将 AkEnvironment 脚本添加到 Trigger。不过,假如您想从头开始创建一个新的 Aux Environment(辅助环境),还要学会如何执行更多相关的操作。除了要将 Collider 设为 Is Trigger,还需使用 Rigidbody 组件和 AkGameObj 脚本。

在 Unity 管理游戏对象位置时,AkGameObj 会将这些位置、相关的 Game Sync(游戏同步器)以及 Environment 值报告给 Wwise。

在添加 AkEvent 或 AkAmbient 组件或者直接在 Play 模式下触发声音时,会自动添加 AkGameObj 组件。不过,要想将环境信息(如辅助总线指派)发送给 Wwise,必须确保把 AkGameObj 设为 Environment Aware。

Rigidbody 组件允许游戏将物理控制下的运动应用到对象。

这其中包括计算特定方向上的重力或速度。因为每次的运动都是在 Unity 的物理引擎中统一计算的,所以 Unity 也会知道这些对象之间是否重叠 (Trigger) 或碰撞 (Collider)。Rigibody 会利用同一游戏对象上绑定的 Collider 组件来计算重叠或碰撞情况。因此,我们只需将一个 Rigidbody 绑定到两个游戏对象之一即可。

[备注]

最好将 Rigidbody 添加到 AkEnvironment 游戏对象,以此最大限度地减少场景中添加的 Rigidbody 数量。

接下来,我们将在 Woodlands(林地)创建一个新的 Trigger,并通过 AkEnvironment 脚本来为其添加其余的 Rigidbody 和 AkGameObj。

  1. 在 Unity 菜单栏中,依次转到 Audiokinetic > Certification > 301 > Lesson 6,然后选择 Creating an Aux Environment

  2. 在 Unity 菜单栏中,依次转到 GameObject > 3D Object,然后选择 Cube

    此时,将会在 Hierarchy 中生成 Cube 形状实例。

  3. 右键单击 Cube 游戏对象,然后选择 Rename 并键入 Woodlands

  4. Woodlands 游戏对象从 Hierarchy 拖到 AUX Environments 游戏对象中。

    接下来,我们先调节 Trigger 的形状以使其与 Woodlands 相称。Woodlands 区域包含 Road to the Woodlands 和 Road to the Pine Forest。最好每个部分都能拥有不同的声学效果,这样便只需创建 Woodlands 中心,并将 Waterfall(瀑布)、Evil Spit Plant(喷弹怪)等覆盖在内。

  5. 使用 Move Tool、Rotate ToolScale Tool 来调节 Woodlands Trigger,使其覆盖 Woodlands 区域最中间的部分。

    接下来,我们通过添加各种脚本并禁用不需要的组件来配置游戏对象。首先,通过禁用 Mesh Renderer 来将其设为不可见,因为在游戏当中不能玩家让看到 Trigger。

  6. 在 Inspector 中,禁用 Mesh Renderer 组件。

    目前 Box Collider 没有设成 Trigger。也就是说,其他 Collider 是没有办法进入其内的。

  7. 在 Box Collider 中,选中 Is Trigger 复选框。

    接下来,将 AkEnvironment 脚本添加到游戏对象。

  8. 单击 Add Component,然后搜索并选中 AkEnvironment

    我们注意到,AkEnvironment 将自动提示目前尚未在 AkEnvironment 上添加 Rigidbody,并会提供相应的添加按钮。

    在《Wwise Adventure Game》中,最好将 Rigidbody 添加到 AkEnvironment 上。这样就可以最大限度地减少场景中所需的 Rigidbody 数量,从而减轻物理计算和 CPU 处理负荷。

  9. 在 AkEnvironment 中,单击 Add Rigidbody

    此时,警告消息和 Add Rigidbody 按钮将会消失,同时会在下方添加一个 Rigidbody。

    我们要按照跟前面章节一样的方式来为 AkEnvironment 组件指派辅助总线。

  10. AuxBus Name 属性中,选中 Woodlands 辅助总线并单击 OK

    最后,其他所有用于发送 Event(事件)游戏对象都已经添加了 AkGameObj 组件,只有 Player 还没有添加。为此,我们需要将 AkGameObj 添加到 Player 游戏对象。这样的话 Aux Environment 就会注册 Player 所触发的全部声音。

  11. 在 Hierarchy 中,选中 Player 游戏对象。

  12. 在 Inspector 中,单击 Add Component,然后搜索并选中 AkGameObj

    现在,我们会看到为 Player 游戏对象添加了 AkGameObj 组件,同时选中了 Environment Aware 选项。

    搞定!现在,我们创建了一个具有完备 Aux Environment 功能的 Trigger。接下来,我们利用 Profiler 来验证一下整合效果。

  13. 在 Wwise 菜单栏中,转到 Layouts(布局),然后选择 Profiler(性能分析器)。

  14. 在 Advanced Profiler(高级性能分析器)的 Voices Graph(声部图)中,单击 Filter(筛选器)旁的“浏览”按钮 [...],然后依次展开 Master-Mixer Hierarchy > Default Work Unit > Master Audio Bus > World > AUX > Region_Woodlands(Master-Mixer 层级结构 > 默认工作单元 > 主音频总线 > World > AUX > Region_Woodlands),最后选中 Woodlands 辅助总线并单击 OK(确定)。

  15. Remote Connections(远程连接)视图中,选中 Wwise Adventure Game (Editor) 并单击 Connect(连接),然后在 Unity 中按下 Play 按钮进入场景,并跑到 Woodlands

    在 Wwise 中,仔细看下 Advanced Profiler。我们注意到,Ambient_Waterfall 和 Ambient_Region_Woodlands Event 在使用 Woodlands 辅助总线,而且 Trigger 之内所有实例化的声音事件(如 Player_WeaponSwing 或 EvilSpitPlant_ShootBullet Event)也将使用该辅助总线。现在您可以退出 Play 模式了。