【Unity】プレイヤーとの距離でGameObjectから出る音の大きさを変化させるやり方

Unity

スポンサーリンク

ゲームでよくある、敵に近づくにつれて足音が大きくなったり、危険を知らせるような音楽が大きくなったり。

そんなやり方を紹介します。

プレイヤーとしては以下を使います。

完成動作

作り方

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) の距離によって音の大きさが変わる。

Unity

Posted by ton