レッスン 5

目次

StateをAkState Componentで設定する(Setting States using the AkState Component)

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の影響を受けてピッチが変わります。

  1. Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 5 を選択し、 Setting States using the AkState Component を選択します。

  2. Hierarchyで Wwise > Music Zones を展開し、 MusicRegion_WwizardMagicHouse を選択します。

    Wwizard Houseの中に、家の内側を示す緑の線があります。MusicRegion_WwizardMagicHouseというTriggerで、ここにAkStateをつなげます。

  3. [注釈]

    もし緑の線が表示されなければ、InspectorのMesh Colliderコンポーネントが確実に展開表示されているかを確かめてください。

  4. Inspectorで Add Component をクリックし、 AkState を検索して選択します。

    まず、Stateを選択します。

  5. 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条件を選択してください。

  6. Trigger On プロパティに AkTriggerEnter だけを設定します。

    レッスン 1 で、PlayerがCoinをピックアップするのを特定するのにAkTriggerEnterを使いましたが、同じように、このTriggerが認識すべきゲームオブジェクトを宣言しなければならないので、AkTriggerEnterスクリプトを、MusicRegion_WwizardMagicHouseのTriggerに追加し、それにPlayerをアサインします。

  7. Add Component をクリックし、 AkTriggerEnter を検索して選択します。

  8. Hierarchyの Player ゲームオブジェクトをAkTriggerEnterの Trigger Object プロパティまでドラッグします。

    Triggerの中に入るとMagicZoneのStateがInsideに設定され、MagicZoneエフェクトがゲームのすべてのサウンドに適用されます。Triggerに入ったときはMagicZoneのStateに設定しましたが、Triggerの外に出たときに、Stateを元の設定に戻さなければなりません。まず最初に、AkStateをもう1つ追加します。

  9. Inspectorで Add Component をクリックしてから、 AkState を探してこれを追加します。

    ほかのColliderが存在するのかどうかを検知するには、AkTriggerExitの選択肢が使えます。

  10. AkStateの Trigger On プロパティに AkTriggerExit だけを設定します。

  11. AkStateの State Name で、MagicZoneを展開し、 MZ1_OutsideHouse のStateを選択してダブルクリックします。

    AkTriggerEnterがPlayerを検知するのにAkTriggerEnterスクリプトが必要だったのと同様に、該当のTrigger Onの選択肢を使っているので、AkTriggerExitスクリプトも追加するべきです。

  12. Add component を選択し、 AkTriggerExit コンポーネントを検索して選択します。

  13. Hierarchyの Player ゲームオブジェクトをAkTriggerExitの Trigger Object プロパティまでドラッグします。

    それでは試してみて、音楽やアンビエンスやインタラクティブサウンドに、どのように影響するのかを聞いてみてください。

  14. Playモードに入り 、Wwizard Houseまで走り、中に入ります。

    Wwizard Houseの中のサウンドがすべて変えられた様子に注意して、聞いてください。剣を何回か振り回して、Adventurerのボイスも、少しだけ高いピッチになったのを聞いてみてください。

  15. 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スクリプトと同じ手順です。