ゲームでよくある、敵に近づくにつれて足音が大きくなったり、危険を知らせるような音楽が大きくなったり。
そんなやり方を紹介します。
プレイヤーとしては以下を使います。
完成動作
作り方
Audio Listener(オーディオリスナー)の設定
Audio Listener(オーディオリスナー) は耳のような機能で、この耳との距離によって、音の大きさを変えれるようにしていきます。
1.デフォルトで”Main Camera”ゲームオブジェクトについている”Audio Listener”コンポーネントを削除
※デフォルトではカメラが耳の役割をしている。
※Audio Listenerはシーンの中に一つしか使えないので、デフォルトでついている”Main Camera”ゲームオブジェクトからは削除しておく。複数ついていると予期しない動作となる。

2.プレイヤー(音源との距離によって音の大きさを変えたいGameObject)に “Audio Listener”コンポーネントを追加(今回は例としてunity-chanをプレイヤーとしている)


これで、プレイヤー(unity-chan)に耳(Audio Listener)が付いた。
音源となるGameObjectの設定
1.例として、”Cylinder”ゲームオブジェクトを音源として作成

2.Cylinderに”Audio Source”コンポーネントを追加


2.”AudioClip”プロパティに適当な音を入れる。
今回は適当にネットからダウンロードしてきた音を使用

3.Loopにチェックを付ける(任意)
今回は”AudioClip”に設定した音の長さが短いのでループさせる。

ここまでではまだプレイヤーがどこにいても、音は同じ大きさで聞こえる。
ここから、音源との距離によって、音の大きさが変わるように設定していく。
4.”Spatial Blend”プロパティを3Dにする。
2Dだと、音源との距離に関係なく音の大きさが均一に聞こえる。
3Dだと、音源との距離に関係して音の大きさが変化するようになる。

5.”3D Sound Settings”の▽を押下し展開して、”Max Distance”プロパティ(音が聞こえる最大の距離)を任意に変える。デフォルトの500だと、相当遠くまで聞こえる。
今回は5にした。

以下のGameObjectの周りの青い枠が音が聞こえる範囲

6.”Volume Rolloff”プロパティを”Custom Rolloff”にする。(任意)
“Custom Rolloff”の方が距離によっていい感じの音の大きさの変化の感じ。

上の画像のグラフ(距離と音量などの設定)の部分の曲線は任意に変えることができるので、細かく設定したい場合はここを変更する。
7.”Spread”プロパティ(音の広がり方?あまり詳しくわからない)を180にする。
180だと均等になるらしい?

完成
これでプレイヤー(”Audio Listener”コンポーネントが付いているGameObject)と音源(”Audio Source”コンポーネントの”Spatial Blend”プロパティが3DになっているGameObject) の距離によって音の大きさが変わる。
コメント