レッスン 2

目次

Attenuation Sphere

このSceneに、Ambient_WindmillのEventがAkAmbientコンポーネントとして追加されましたが、まだWindmillの距離に基づく減衰の設定が残っています。プレイヤーのスタートポジションからWindmill音が全く聞こえませんが、それは、リスナーゲームオブジェクト(Main Camera)が、Ambient_WindmillというBlend Containerの減衰の最大半径よりも外側にあるからです。

[ヒント]

Wwise Unity Integrationのリスナー(AkAudioListener)に関する詳細は、 レッスン 9 で確認してください。

そこで、Ambient_WindmillのAttenuation ShareSetの、Max distance(最大距離)を長くします。さて、どれくらい長くするべきでしょうか?また、確実にスタートポジションでプレイヤーに音が聞こえるようにするには、どうすればよいでしょうか?1つの解決法が、Attenuation Spheresです。

AkAmbientコンポーネントのAttenuation Sphereを有効にすると、ゲームオブジェクトを中心とし、Wwiseで設定済みのMaximum attenuation distanceを半径とするsphere(球体)が表示されます。このsphereを見れば、Attenuation Editorで設定したMax distanceが表されるので、ゲーム内のゲームオブジェクと比較して、距離の妥当性を判断できます。

それでは、Attenuation SphereをWwise Adventure Gameで有効にして設定する手順を説明します。

  1. Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 2 を選択し、 Attenuation Spheres を選択します。

  2. Hierarchyで L2_2B - Village Environment Scene を選択し、Wwiseを展開し、 Windmill ゲームオブジェクトを選択します。

  3. アタッチされているAkAmbientコンポーネントの、 Show Attenuation Sphere プロパティを、 Current_Event_Only に設定します。

    ここで Current_Event_Only を選択すればSceneビューでAttenuationを示す赤いsphereが表示されそうですが、されません。デフォルトで、Attenuation ShareSetsのMax distance値がSoundBankにメタデータとして入ってこないからで、このsphereを生成するには、SoundBank設定を変える必要があります。

  4. Wwiseで、 Project > Project Settings を選択します。

  5. SoundBanksタブを選択します。

  6. SoundBanksタブで Max Attenuation を有効にします。

    これで、Wwise Unity IntegrationですべてのAttenuation ShareSetsの、すべてのMax distancesを取得できるので、それに基づいて各Attenuation Sphereのサイズを決めることができます。

    [ヒント]

    あなたのカスタムスクリプトでも、AkWwiseProjectInfo.GetData().GetEventMaxAttenuation()ファンクションをコールすれば、Max distanceを取得できます。

  7. Project Settingsで OK をクリックします。

    SoundBankをWwiseで生成する方法を知っているかもしれませんが、UnityのWwise Pickerでも、SoundBankを生成できます。

  8. UnityでWwise Pickerを探し、 Generate SoundBanks をクリックします。

    Generate SoundBanksをクリックすると、すべてのプラットフォームやランゲージの、すべてのSoundBankが生成されます。この処理に時間がかかることがあります。選択中のWindmillゲームオブジェクト上に、sphereが表示されます。

  9. 手のひらツール ('Q') を使って、Sceneビューの位置を、 WindmillMain Camera の両方を見ながら調整します。

    今、sphereがMain Cameraのあるプレイヤーのスタートポジションまで届いていないため、Windmillが全く聞こえないことが分かります。それではWwiseに戻り、Attenuationの設定を調整します。

  10. Wwiseで 'Windmill' を検索してAmbient_WindmillのBlend Container を選択します。

  11. Positioningタブで Edit をクリックします。

    Attenuation EditorのMax distanceフィールドを見ると、現在のAttenuation distanceの35となっていて、これはUnityのsphereの大きさに該当します。

    さて、これを何に設定しますか?1つのやり方として、UnityとWwiseを交互に見ながら徐々に大きくしていき、結果を確認することができます。ただし、それよりも正確なのは、Sphere Colliderの半径を一時的に利用する方法です。

  12. UnityのInspectorでSphere Colliderに進み、 Radius35 に設定します。

    Sceneビューで、Attenuation Sphereの端が緑の線で表示されます。ゲームオブジェクトにScale(拡大縮小)の設定がされていない限り、Sphere ColliderのRadius(半径)は、そのまま直接AttenuationのMax distanceプロパティとなります。Sphere ColliderのRadiusを大きくすれば、Attenuationがプレイヤーに届くために必要な距離を可視化できます。

  13. クリックして Radius プロパティを押さえたまま 右にドラッグし 、緑のSphere TriggerがPlayerに届くようにします。

    適切な値が分かれば、その数値を、Attenuation ShareSetのMax distanceフィールドに使えます。

  14. Wwiseに切り換え、Attenuation Editorの Max distance の設定を、新しい Sphere Collider Radius値(切り上げ)と同じ値に設定します。

    今、一時的に測定するためにSphere Colliderを使っただけなので、設定を1に戻します。

  15. UnityのInspectorでSphere Colliderを探し、 Radius プロパティを 1 に設定します。

    最後に、最新の変更点をSoundBankから取得する必要があります。

  16. Wwise Pickerで Generate SoundBanks をクリックします。

    UnityのWwise PickerでSoundBankを生成すると、同時に、UnityプロジェクトもWwise Projectの最新情報でアップデートされます。

Attenuation Sphereの大きさが大きくなり、Playerのスタートポジションにもかかっているのが分かります。

これで、減衰がどこまで届くのかを、Unityで正確に判断できるのです。