Wwise Implementierung in Unity (Teil 3: AkState, AkSwitch)

Bei meinem letzten Blogeintrag habe ich die Wwise-Implementierungsskripte AkInitializer und AkBank, die eine grundlegende Voraussetzung für die Nutzung der Wwise Audio-Engine bilden und das Laden von Soundbanks ermöglichen, beschrieben.

Ein Grundbaustein eines adaptiven Sounddesigns ist das adaptive Verhalten von Sounds, das auf unterschiedliche Gegebenheiten im Spiel reagiert. Dafür gibt es Switches und States, die quasi Zustände repräsentieren und wie Schalter aktiviert werden können. Der Hauptunterschied zwischen Switches und States ist, dass ein Switch jeweils einem einzigen GameObject zugeordnet wird, während States von unterschiedlichen GameObjects aktiviert werden können. Die Nutzung und Konfiguration beider Parameter ist hingegen identisch.

Für das Verändern eines Switches oder eines States gibt es extra dafür vorgefertigte Skripte namens AkSwitch und AkState. In Wwise müssen dafür bereits die unterschiedlichen States bzw. Switches und die State bzw. Switch-Container mit den Audiofiles vorhanden sein, damit man sie in Unity implementieren kann. Ist das gegeben legt man ein AkSwitch- bzw. AkState-Skript auf ein GameObject. In diesen kann man nun über den Unity-Inspector den Switch bzw. State wählen, der aktiviert werden soll.

Auswahl des States im Unity Inspector

Des Weiteren muss noch bestimmt werden, was den Switch bzw. State triggert. Klassischerweise ist es das Betreten oder Verlassen eines Colliders.

Der State wird hier beim Verlassen des Triggers verändert

Hierbei sollte noch ein AkTriggerEnter– bzw. AkTriggerExit-Skript hinzugefügt werden, der spezifiziert, welches GameObject den Trigger auslöst, ansonsten löst jede Kollision mit irgendeinem anderen GameObject den Trigger aus, was in den meisten Fällen nicht gewünscht ist.

AkTriggerExit-Skript mit dem Player als auslösendes GameObject

Quellen:

[1] https://www.audiokinetic.com/library/edge/?source=SDK&id=soundengine_switch.html

[2] https://www.audiokinetic.com/courses/wwise301/?source=wwise301&id=Setting_States_using_the_AkState_Component