レッスン 2
目次
この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で有効にして設定する手順を説明します。
-
Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 2 を選択し、 Attenuation Spheres を選択します。
-
Hierarchyで L2_2B - Village Environment Scene を選択し、Wwiseを展開し、 Windmill ゲームオブジェクトを選択します。
-
アタッチされているAkAmbientコンポーネントの、 Show Attenuation Sphere プロパティを、 Current_Event_Only に設定します。
ここで Current_Event_Only を選択すればSceneビューでAttenuationを示す赤いsphereが表示されそうですが、されません。デフォルトで、Attenuation ShareSetsのMax distance値がSoundBankにメタデータとして入ってこないからで、このsphereを生成するには、SoundBank設定を変える必要があります。
-
Wwiseで、 Project > Project Settings を選択します。
-
SoundBanksタブを選択します。
-
SoundBanksタブで Max Attenuation を有効にします。
これで、Wwise Unity IntegrationですべてのAttenuation ShareSetsの、すべてのMax distancesを取得できるので、それに基づいて各Attenuation Sphereのサイズを決めることができます。
あなたのカスタムスクリプトでも、AkWwiseProjectInfo.GetData().GetEventMaxAttenuation()ファンクションをコールすれば、Max distanceを取得できます。
-
Project Settingsで OK をクリックします。
SoundBankをWwiseで生成する方法を知っているかもしれませんが、UnityのWwise Pickerでも、SoundBankを生成できます。
-
UnityでWwise Pickerを探し、 Generate SoundBanks をクリックします。
Generate SoundBanksをクリックすると、すべてのプラットフォームやランゲージの、すべてのSoundBankが生成されます。この処理に時間がかかることがあります。選択中のWindmillゲームオブジェクト上に、sphereが表示されます。
-
手のひらツール ('Q') を使って、Sceneビューの位置を、 Windmill と Main Camera の両方を見ながら調整します。
今、sphereがMain Cameraのあるプレイヤーのスタートポジションまで届いていないため、Windmillが全く聞こえないことが分かります。それではWwiseに戻り、Attenuationの設定を調整します。
-
Wwiseで 'Windmill' を検索してAmbient_WindmillのBlend Container を選択します。
-
Positioningタブで Edit をクリックします。
Attenuation EditorのMax distanceフィールドを見ると、現在のAttenuation distanceの35となっていて、これはUnityのsphereの大きさに該当します。
さて、これを何に設定しますか?1つのやり方として、UnityとWwiseを交互に見ながら徐々に大きくしていき、結果を確認することができます。ただし、それよりも正確なのは、Sphere Colliderの半径を一時的に利用する方法です。
-
UnityのInspectorでSphere Colliderに進み、 Radius を 35 に設定します。
Sceneビューで、Attenuation Sphereの端が緑の線で表示されます。ゲームオブジェクトにScale(拡大縮小)の設定がされていない限り、Sphere ColliderのRadius(半径)は、そのまま直接AttenuationのMax distanceプロパティとなります。Sphere ColliderのRadiusを大きくすれば、Attenuationがプレイヤーに届くために必要な距離を可視化できます。
-
クリックして Radius プロパティを押さえたまま 右にドラッグし 、緑のSphere TriggerがPlayerに届くようにします。
適切な値が分かれば、その数値を、Attenuation ShareSetのMax distanceフィールドに使えます。
-
Wwiseに切り換え、Attenuation Editorの Max distance の設定を、新しい Sphere Collider Radius値(切り上げ)と同じ値に設定します。
今、一時的に測定するためにSphere Colliderを使っただけなので、設定を1に戻します。
-
UnityのInspectorでSphere Colliderを探し、 Radius プロパティを 1 に設定します。
最後に、最新の変更点をSoundBankから取得する必要があります。
-
Wwise Pickerで Generate SoundBanks をクリックします。
UnityのWwise PickerでSoundBankを生成すると、同時に、UnityプロジェクトもWwise Projectの最新情報でアップデートされます。
Attenuation Sphereの大きさが大きくなり、Playerのスタートポジションにもかかっているのが分かります。
これで、減衰がどこまで届くのかを、Unityで正確に判断できるのです。