目录

Wwise SDK 2018.1.11
集成详情——触发器

简介

与所有游戏同步器一样,触发器一种 Wwise 元素,它首先由游戏调用,然后在 Wwise 中定义响应,以满足游戏动作的调用需求。具体地说,在互动音乐中,触发器为响应游戏中的突发事件而启动 Stinger(插播乐句)。插播乐句(短暂的乐句)与当前正在播放的音乐混合,是以音乐方式对游戏内事件做出的反应。例如,当武士拔出他的武器时,您可能希望在音乐之上插入一段强调音乐来提升场景的冲击力。 游戏调用触发器,触发器继而启动插播乐句,然后您的音乐片段将随当前配乐一起播放。

示例:触发器

假设您在做一款潜行游戏,游戏的主人公是典型的间谍角色。在游戏中,主人公有时会进入与敌人格斗的模式。当主人公出绝招时,您可能希望播放一段音乐片段来强化当时场景的听觉冲击力。

要为这一系列动作创建音乐,您需要创建一个触发器,可能会取名为“Headshot”,以在这些情形下调用。另外,您还需要定义小音乐片段,以提供快速密集的铜管乐来强调游戏动作。

有关如何集成触发器的示例,继续阅读 触发器示例

调用触发器

有两个选项可用来调用触发器:SDK 的 AK::SoundEngine::PostTrigger() 方法和 Wwise 事件中生成的“Trigger”动作。

Warning: 组合使用 SDK 和事件动作来调用触发器可能会造成问题。例如,如果在声音开发人员使用 SDK AK::SoundEngine::PostTrigger() 命令调用触发器的同时声音设计师引入他们所创建的事件内的动作,则触发器可能会变得难以控制。我们强烈建议声音设计师和音频程序员共同决定在工程中如何调用触发器。

使用 AK::SoundEngine::PostTrigger() 调用触发器

有两种方法可从 SDK 中调用触发器:使用字符串(Unicode 和 Ansi),或者使用 ID。

使用字符串可以提高代码的可读性,适合在开发期间或者通常使用字符串的环境中使用。使用 ID 后,Wwise 就无需在运行时散列名称了。

从 SDK 中调用触发器的方式如下:

L"TriggerName",
myGameObject1
);

或者

AK::TRIGGERS::TRIGGER_NAME,
myGameObject1
);

启用 ID

要使用 ID,必须在选中 Wwise 中 Generate SoundBanks 对话框上的“Generate header file”选项的情况下生成 SoundBank。名为 Wwise_IDs.h 的定义文件中包含所有必要的 ID。每次生成 SoundBank 时都会更新此文件。

PostTrigger() 函数的第二个参数是触发器所作用的游戏对象的 ID。以游戏对象 ID 的方式把 AK_INVALID_GAME_OBJECT 传递给 AK::SoundEngine::PostTrigger() 将强制执行所有已注册的游戏对象处理这个触发器,这些游戏对象定义了处理此触发器的行为。

参见