レッスン 5
目次
-
レッスン
Eventのポストと同様に、Stateも、コンポーネントから設定したり、スクリプトで設定したりできます。既成コンポーネントを使えばStateを簡単に素早く設定でき、スクリプトを作成すればもっと細かくコントロールできるので、どちらの方式も、ゲームにサウンドをインテグレートする上で非常に重要です。
Stateの設定に使える既成のAkStateスクリプトがWwise Unity Integrationに入っています。AkStateの使い方は比較的簡単で、すでにあるTrigger Onの選択肢を使えば、簡単なStateの切り換え設定で、大体の目的に対応できます。これから、プレイヤーがVillageのMusicRegion_WwizardMagicHouseというトリガーに入ったときに、StateをMagicZoneに切り換える方法を学びます。Stateが変わると、Master Audio Busにエフェクトが適用されるので、PlayerがいったんWwizardの家の中に入ると、サウンドスケープ全体がWwise Flangerの影響を受けてピッチが変わります。
-
Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 5 を選択し、 Setting States using the AkState Component を選択します。
-
Hierarchyで Wwise > Music Zones を展開し、 MusicRegion_WwizardMagicHouse を選択します。
Wwizard Houseの中に、家の内側を示す緑の線があります。MusicRegion_WwizardMagicHouseというTriggerで、ここにAkStateをつなげます。
もし緑の線が表示されなければ、InspectorのMesh Colliderコンポーネントが確実に展開表示されているかを確かめてください。
-
Inspectorで Add Component をクリックし、 AkState を検索して選択します。
まず、Stateを選択します。
-
AkState Componentの State Name というプロパティの States > MusicStates > MagicZone を展開し、 MZ2_InsideHouse のStateを選択してダブルクリックします。
AkStateコンポーネントは、Trigger Onという選択肢がコールされたときに、指定されたStateを設定します。PlayerがWwizard Houseに入るのを、Triggerを使って検知できるようにしたいので、AkTriggerEnterの条件が必要です。
Trigger Onプロパティは複数の選択肢を設定できるので、1つの条件だけに変更したい場合は、まずNothingを選択してから、別のTrigger On条件を選択してください。
-
Trigger On プロパティに AkTriggerEnter だけを設定します。
レッスン 1 で、PlayerがCoinをピックアップするのを特定するのにAkTriggerEnterを使いましたが、同じように、このTriggerが認識すべきゲームオブジェクトを宣言しなければならないので、AkTriggerEnterスクリプトを、MusicRegion_WwizardMagicHouseのTriggerに追加し、それにPlayerをアサインします。
-
Add Component をクリックし、 AkTriggerEnter を検索して選択します。
-
Hierarchyの Player ゲームオブジェクトをAkTriggerEnterの Trigger Object プロパティまでドラッグします。
Triggerの中に入るとMagicZoneのStateがInsideに設定され、MagicZoneエフェクトがゲームのすべてのサウンドに適用されます。Triggerに入ったときはMagicZoneのStateに設定しましたが、Triggerの外に出たときに、Stateを元の設定に戻さなければなりません。まず最初に、AkStateをもう1つ追加します。
-
Inspectorで Add Component をクリックしてから、 AkState を探してこれを追加します。
ほかのColliderが存在するのかどうかを検知するには、AkTriggerExitの選択肢が使えます。
-
AkStateの Trigger On プロパティに AkTriggerExit だけを設定します。
-
AkStateの State Name で、MagicZoneを展開し、 MZ1_OutsideHouse のStateを選択してダブルクリックします。
AkTriggerEnterがPlayerを検知するのにAkTriggerEnterスクリプトが必要だったのと同様に、該当のTrigger Onの選択肢を使っているので、AkTriggerExitスクリプトも追加するべきです。
-
Add Component を選択し、 AkTriggerExit コンポーネントを検索して選択します。
-
Hierarchyの Player ゲームオブジェクトをAkTriggerExitの Trigger Object プロパティまでドラッグします。
それでは試してみて、音楽やアンビエンスやインタラクティブサウンドに、どのように影響するのかを聞いてみてください。
-
Playモードに入り 、Wwizard Houseまで走り、中に入ります。
Wwizard Houseの中のサウンドがすべて変えられた様子に注意して、聞いてください。剣を何回か振り回して、Adventurerのボイスも、少しだけ高いピッチになったのを聞いてみてください。
-
Wwizard Houseを出ます。
Wwizard Houseを出るとサウンドスケープが通常に戻り、Master Audio Busに対するFlangerのエフェクトはなくなり、Adventurerのアタックするときのボイスが、高いピッチでなくなるはずです。このようにして、PlayerがWwizard Houseを出入りするのに合わせて、サウンドスケープもダイナミックに切り換わります。Play をもう一度クリックし、 Play mode を 終了させます 。
以上です。今、PlayerがMusicRegion_WwizardMagicHouseに入るときと出るときに、MusicZoneのStateが変わるようになりました。こうして、AkStateコンポーネントを使えば、非常に早くStateを変えることができ、さらにAkTriggerEnterやAkTriggerExitのスクリプトと組み合わせれば、Stateがどのゲームオブジェクトに反応するのかを厳密に指定できます。
UnityのSwitchの設定は、AkSwitchスクリプトと同じ手順です。 |