LemonteaのUnity部屋

LemonteaのUnity部屋

Unityの使い方とかです~

Unity 3DSoundsで離れると聞こえなくするandドップラー効果

こんにちは。レモンティーです。

ゲームの音楽って、均一に聞こえて欲しいときと、
音源との距離に応じて大きく聞こえたり小さく聞こえたりして欲しい時
両方ありますよね。

今回は、距離に応じて音量を変化させたい場合の方法です。

AudioSourceコンポーネントにはもともとそういう設定がありますから
スクリプトを書いたりする必要はないです。


さっそくやっていきます。

まず、音源にAudioSourceコンポーネントを追加します。

そうしたら、SpatialBlendの値を1(3D)にします。
f:id:sawalemontea:20170912154255p:plain

これで2D扱いだったサウンドが3Dで扱われるようになりました。



そうしたら、下の方の
3D Sound Settingsを弄ります。

f:id:sawalemontea:20170912154355p:plain

Volume Roll offをCustom Roll Offに変更。
ちなみに、グラフを弄ると勝手にこの設定にかわるので手動で設定しなくてもいいです。
今回は、この設定の時のデフォルトのグラフにしたかったので手動でやりました。

肝心の音量は赤のグラフです。
f:id:sawalemontea:20170912155243p:plain

赤丸の所で音量が0になっていますね。
このままだと距離500で聞こえなくなります。

ちょっと範囲が広いので変更します


…とはいったものの、横軸が500もあると
微調整できないのでへらしましょう。

これは、グラフの↑にあるMaxDistanceと同じ値なので
MaxDistanceを小さくします。
f:id:sawalemontea:20170912155619p:plain

こんな感じにしました。
距離30で聞こえなくなります。

(ちなみに、MaxDistanceとは、それより遠くでは
 その地点の音量で聞こえるよ、という距離のことです。
 つまり今回の場合、
 30より離れると30での音量(要は0)で聞こえるというわけです。)

これで音が聞こえる範囲はだいぶ小さくなりました。


先ほどグラフをデフォルトのまま使うと言いましたが、
それは聞こえなくなる地点とMaxDistanceが一致していると
エディタで扱いやすいからです。

MaxDistanceは画面に↓のような青い球で表示されます
f:id:sawalemontea:20170912160415p:plain


これが聞こえる範囲と一致していると
作業しやすいと思います。



さて、これで距離に応じて音量を変化させることはできました。

ですが、このままだと問題があります。

最初にサウンドを3Dにしたせいで
ドップラー効果の影響も受けるようになっています。

これがけっこうキツめです。
効果音なら良い仕事することもあるかもしれませんが
BGMは基本的に台無しです笑


なので↓のドップラー効果の項目を0に設定して
計算しないようにしておきます
f:id:sawalemontea:20170912160919p:plain

これで完成です。

さっそく聞いてみます。

youtu.be

おお、良い感じですね。

今回はこれでおしまいです。





関連
sawalemounity.hatenablog.com