{"id":6160,"date":"2021-06-21T15:16:07","date_gmt":"2021-06-21T15:16:07","guid":{"rendered":"http:\/\/desres20.netornot.at\/?p=6160"},"modified":"2021-06-21T15:16:07","modified_gmt":"2021-06-21T15:16:07","slug":"wwise-implementierung-in-unity-teil-3-akstate-akswitch","status":"publish","type":"post","link":"http:\/\/desres20.netornot.at\/?p=6160","title":{"rendered":"Wwise Implementierung in Unity (Teil 3: AkState, AkSwitch)"},"content":{"rendered":"\n<p>Bei meinem letzten Blogeintrag habe ich die Wwise-Implementierungsskripte <em>AkInitializer<\/em> und <em>AkBank<\/em>, die eine grundlegende Voraussetzung f\u00fcr die Nutzung der Wwise Audio-Engine bilden und das Laden von Soundbanks erm\u00f6glichen, beschrieben.<\/p>\n\n\n\n<p>Ein Grundbaustein eines adaptiven Sounddesigns ist das adaptive Verhalten von Sounds, das auf unterschiedliche Gegebenheiten im Spiel reagiert. Daf\u00fcr gibt es Switches und States, die quasi Zust\u00e4nde repr\u00e4sentieren und wie Schalter aktiviert werden k\u00f6nnen. Der Hauptunterschied zwischen Switches und States ist, dass ein Switch jeweils einem einzigen <em>GameObject<\/em> zugeordnet wird, w\u00e4hrend States von unterschiedlichen <em>GameObjects<\/em> aktiviert werden k\u00f6nnen. Die Nutzung und Konfiguration beider Parameter ist hingegen identisch.<\/p>\n\n\n\n<p>F\u00fcr das Ver\u00e4ndern eines Switches oder eines States gibt es extra daf\u00fcr vorgefertigte Skripte namens <em>AkSwitch<\/em> und <em>AkState<\/em>. In Wwise m\u00fcssen daf\u00fcr 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 <em>GameObject<\/em>. In diesen kann man nun \u00fcber den Unity-Inspector den Switch bzw. State w\u00e4hlen, der aktiviert werden soll. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"293\" height=\"268\" src=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/TriggerObject.png\" alt=\"\" class=\"wp-image-6332\"\/><figcaption><em>Auswahl des States im Unity Inspector<\/em><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Des Weiteren muss noch bestimmt werden, was den Switch bzw. State triggert. Klassischerweise ist es das Betreten oder Verlassen eines Colliders.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"288\" height=\"285\" src=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/TriggerOn.png\" alt=\"\" class=\"wp-image-6333\"\/><figcaption>Der <em>State wird hier beim Verlassen des Triggers ver\u00e4ndert<\/em><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Hierbei sollte noch ein <em>AkTriggerEnter<\/em>&#8211; bzw. <em>AkTriggerExit<\/em>-Skript hinzugef\u00fcgt werden, der spezifiziert, welches <em>GameObject<\/em> den Trigger ausl\u00f6st, ansonsten l\u00f6st jede Kollision mit irgendeinem anderen <em>GameObject<\/em> den Trigger aus, was in den meisten F\u00e4llen nicht gew\u00fcnscht ist.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1011\" height=\"580\" src=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkStateSkript.png\" alt=\"\" class=\"wp-image-6334\" srcset=\"http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkStateSkript.png 1011w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkStateSkript-300x172.png 300w, http:\/\/desres20.netornot.at\/wp-content\/uploads\/2021\/06\/AkStateSkript-768x441.png 768w\" sizes=\"(max-width: 1011px) 100vw, 1011px\" \/><figcaption><em>AkTriggerExit-Skript mit dem Player als ausl\u00f6sendes GameObject<\/em><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Quellen:<\/p>\n\n\n\n<p>[1] https:\/\/www.audiokinetic.com\/library\/edge\/?source=SDK&amp;id=soundengine_switch.html<\/p>\n\n\n\n<p>[2] https:\/\/www.audiokinetic.com\/courses\/wwise301\/?source=wwise301&amp;id=Setting_States_using_the_AkState_Component<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei meinem letzten Blogeintrag habe ich die Wwise-Implementierungsskripte AkInitializer und AkBank, die eine grundlegende Voraussetzung f\u00fcr die Nutzung der Wwise Audio-Engine bilden und das Laden von Soundbanks erm\u00f6glichen, beschrieben. Ein Grundbaustein eines adaptiven Sounddesigns ist das adaptive Verhalten von Sounds, das auf unterschiedliche Gegebenheiten im Spiel reagiert. Daf\u00fcr gibt es Switches und States, die quasi<\/p>\n<footer class=\"entry-footer index-entry\">\n<div class=\"post-social pull-left\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6160\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-facebook\" aria-hidden=\"true\"><\/i><\/a><a href=\"https:\/\/twitter.com\/home?status=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6160\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-twitter\" aria-hidden=\"true\"><\/i><\/a><a href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=http%3A%2F%2Fdesres20.netornot.at%2F%3Fp%3D6160&#038;title=Wwise+Implementierung+in+Unity+%28Teil+3%3A+AkState%2C+AkSwitch%29\" target=\"_blank\" class=\"social-icons\"><i class=\"fa fa-linkedin\" aria-hidden=\"true\"><\/i><\/a><\/div>\n<p class=\"link-more\"><a href=\"http:\/\/desres20.netornot.at\/?p=6160\" class=\"more-link\">Continue reading <span class=\"meta-nav\">\u2192<\/span><\/a><\/p>\n<\/footer>\n","protected":false},"author":32,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6160"}],"collection":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6160"}],"version-history":[{"count":3,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6160\/revisions"}],"predecessor-version":[{"id":6335,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=\/wp\/v2\/posts\/6160\/revisions\/6335"}],"wp:attachment":[{"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6160"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/desres20.netornot.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}