レッスン 3

目次

Triggerを使いSoundBankをロードする(Loading SoundBanks using Triggers)

Wwise Adventure Gameのゲームコンテンツは、進捗系('active quest'など)やリージョン(砂漠や地下牢など)に分けられます。つまり、プレイヤーがWoodlands(林)にいるときは、Waterfall(滝)のEventが入ったSoundBankがメモリにロードされ、それをポストする準備が整います。そしてプレイヤーがこのリージョンを出て、Eventが停止されると、WaterfallのEventの入ったSoundBankはメモリからアンロードされ、その分のメモリは、これからロードするほかのSoundBank用に解放されます。

AkAudioListenerが、Woodlandsのようなリージョンに入ったことを登録するには、Triggerを使います。

[ヒント]

Trigger Colliderについて詳しくは、 レッスン 1 を参照してください。

Main Camera(AkAudioListenerコンポーネントのあるゲームオブジェクト)を見ると、Sphere Trigger Colliderというものがあります。このTrigger Colliderが、リージョンのTrigger Colliderに入ると、そのリージョンのSoundBankが、AkBankスクリプトを使いロードされるはずです。これから、ゲームオブジェクトのCube ColliderをIs Triggerに設定してWoodlandsリージョン用に準備し、そこからWoodlandsのSoundbankをAkBankスクリプトでロードする手順を、説明します。

  1. Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 3 を選択し、 Loading SoundBanks using Triggers を選択します。

    Unityでは、様々なタイプのColliderが自由に使えます。Woodlandsリージョンでは、Box Triggerの大きさを調整し、Villageの橋のところからCave(洞窟)に至るまでのリージョンを覆うようにします。まず最初にSceneビューを調節し、Woodlandsエリアが見えるようにしてください。

  2. Hierarchyで Waterfall ゲームオブジェクトを選択し、Sceneビューの中にマウスを置いたまま、 F をクリックします。

  3. Unityのメニューで、 GameObject > 3D Object を選択し、 Cube を選択します。

    ゲームオブジェクト名は、分かりやすくするために、その役目を説明するような名前に変えてください。

  4. Cubeゲームオブジェクトを右クリックし、 Rename を選択し、' Woodlands Trigger 'と入力します。

    Cubeゲームオブジェクトを作成した時点で、ゲームオブジェクトに自動的にBox Colliderが追加されます。Box Colliderにはいくつかのプロパティフィールドがあり、 Size (ゲームオブジェクトの倍率に比例)、 Center (回転軸と相対関係にある中心点)、物理的な Material (摩擦など物理的なプロパティを定義するために使う材質情報)、そして一番上に、このCollider形状にほかのCollider が入れるようにする Is Trigger プロパティ(詳細は レッスン 1 で説明)などがあります。Woodlands Triggerは、プレイヤーが出入りできるColliderなので、Triggerとして設定します。

  5. InspectorでBox Colliderを探し、 Is Trigger を有効にします。

    Box Colliderに、ほかのColliderが入ることができるので、ゆくゆくはColliderのメッシュを非表示にしますが、今は開発段階なので、半透明のMaterial(素材)にしてTriggerに入ったときが分かるようにしてください。既成のTrigger_RedというMaterialが、半透明の赤に設定されたShader(形や色を決めるのに使うコード)なので、ここで使えます。

  6. Projectビューで Trigger_Red を検索します。

  7. Trigger_Red というMaterialをProjectウィンドウからドラッグし、Hierarchyにある、作成した Woodlands Trigger ゲームオブジェクトの上に持っていきます。

    これでColliderの外側が半透明な赤で表示されますが、中にいるときはこの形が表示されないので、注意してください。

    次に、Trigger Colliderを調節し、VillageからCave直前に至るまでの範囲の、Woodlandsリージョンに、大きさを合わせます。ここで使うのは、Moveツール、Rotateツール、Scaleツールです。

    [注釈]

    組み合わせツールの'Move, Rotate or Scale'は使わず、慣れるまで、個別に扱えるMove、Rotate、Scaleのツールを使うことを推奨します。

    Scaleツールを使いゲームオブジェクトを拡大します。

  8. Unityのツールバーで、 Scale tool を選択します。

  9. 中央の灰色のボックスをクリックしてホールドし、そのままマウスを右にドラッグし、ボックスが木々より高くなる位置に持っていきます。

  10. MoveツールRotateツールScaleツール を使い、ゲームオブジェクトの最終調整をして、Woodlandsリージョン全体を覆うようにします。

    ColliderがPine Forest(松林)など隣接する土地にかかっても構いませんが、Village側の面は、Village TriggerによってVillageのSoundbankがロードされる場所であり、WoodlandsのSoundBankの中のEventをすべて停止すべきところなので、Colliderが橋に少しだけかかるようにして、それ以上は出ないように気をつけます。次にAkBankスクリプトを追加し、プレイヤーがBox Colliderに入ったときにWoodlandsのSoundBankがロードされるようにします。

  11. Woodlands Trigger ゲームオブジェクトが選択されていることを確認してから、Inspectorで Add Component をクリックして AkBankを探し、これを選択します。

    次にSoundBankをアサインしてください。

  12. Bank Name プロパティで Banks > Default Work Unit > Region を展開し、 Woodlands を選択します。

    次にこれをAkTriggerEnterに設定し、Triggerに別のTriggerが入ってきたときに検知できるようにします。

    [ヒント]

    すでに レッスン 1 で説明したとおり、SoundBankをロードするときの要件を変更する必要があれば、まず一度Nothingに設定してから、新しいLoad方法を選択することで、2つが同時選択されないようにできます。

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

  14. Unload On プロパティに AkTriggerExit だけを設定します。

    これでWoodlandsのSoundBankが、Colliderに入ったときにロードされ、出るときにアンロードされるように設定しましたが、まだ検出するゲームオブジェクトを指定していません。つまり、Triggerを出入りするすべてのものが検出されてしまい、地面のColliderにもEvil Crawlerにも反応します。入ったときに検出されるのはリスナー(Main Camera)だけにしたいので、AkTriggerEnterスクリプトを追加してTrigger Objectをアサインする必要があります。

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

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

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

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

    これで、Triggerの出入りに際して、サウンドバンクをロード・アンロードするための必要な手順が、すべて完了しました。実装したあとのグッドプラクティスとして、常にテストすることが重要なので、ゲームのランタイムにプロファイラを接続してください。

  19. Wwiseで Remote… をクリックします。

  20. Remote Connectionsウィンドウで Wwise Adventure Game (Editor) を強調表示にして、 Connect をクリックします。

  21. Unityで Play をクリックします。

  22. Woodlandsまで走っていきます。

  23. Play をもう一度クリックしてPlayモードを終了させます。

  24. Wwiseメニューで Layouts を選択し、 Profiler を選択します。

  25. タイムカーソルを後方にドラッグし、Advanced ProfilerのMemoryタブに Woodlands のSoundBankが表示されるまで戻ります。

WoodlandsのSoundBankは、あなたがWoodlandsリージョンに入るとロードされたことが分かりますが、タイムカーソルをさらに左にドラッグしていくと、どこかの時点でWoodlands.bnkが非表示になるので、あとでプレイヤーがWoodlands Triggerに入ったときにロードされることが分かります。