目次
はじめに
個人の備忘録としてまとめています。誤った情報がある場合があります。
コメントにてご指摘のほどお願いいたします。
場所によってBGMの音がスムーズ切り替わるようにするには、Ambient Zoneを利用することで簡単に実現することができます。
あまり知られていない機能ですが非常に強力なものですので活用してみましょう。
UE5 AmbientZone検証 pic.twitter.com/MUi5lVfDtc
— なみとん (@koituwasugee) 2023年9月9日
環境
UE5.3.0
FPSサンプル
以下のサイトを参考に記述しました。
解説
環境の構築
UE上で簡単な部屋を作成してこの部屋に入ったらBGMが切り替わるようにします。
わかりやすいようにMeshを編集して部屋風にしました。

Audio Volume の配置
音声の切り替えたい範囲 = 部屋の中を定義するために、Audio Volumeを配置します。
アクタを配置からオーディオボリュームをレベルにドラッグアンドドロップします。

ブラシセッティングもしくはスケールを変更して部屋の形状に合うように設定します。

Tips
ブラシ形状から形状を変更できます。
指定したいエリアに応じて適切な形状を設定することができます。
Audio Volume の設定

AudioVolumeのプロパティにアンビエントゾーン設定という項目があります。
これを設定することでこのエリアに入ったとき、どのように外部と内部の音声をブレンドするかを指定できます。
今回は環境BGMから室内BGMに2秒かけてブレンドするような設定にしてみました。

Ambient Sound の配置
エリアの指定が終わったので次に音源であるAmbient Soundを配置していきます。

環境BGMである音源を室外に1つと、室内BGMである音源をAudio Volume中に配置します。

Ambient Sound の設定
AmbientSoundそれぞれに再生したい音源を設定します。
サウンド→詳細設定のSound Class Overrideからサウンドクラスを作成します。

名前はSC_Ambientとしました。

SC_AmbientのApplyAmbientVolumesにチェックを入れます。

両方のAmbeinetSoundにこのSC_Ambientを割り当てます。

Allow Spatializationにチェックがついているのを確認したら完成です、

音量調整はそれぞれのAmbientSoundで行います。

サウンドの音量調整
AudioVolumeによる音量制御と音量調整を両立する手法は以下の方法で出来ます。
これにより、移動先のエリアの音量が0の場合はZoneの設定が1でもそのまま0になります。

注意事項
・AmbientSoundの音量について
空間に配置したAmbientSoundの初期音量が0だとロードされないことがありました。
そのため0.1など非常に小さい音にしておくとよさそうです。

・Volumeの計算はカメラ座標を利用しているようです。
そのためTPPの場合はキャラの位置と聞こえる範囲が変わってしまいます。
⇒こちらUnreal Engineの音を聞く位置がデフォルトでカメラの位置になっているようでした。
そのためキャラクターの位置にリスナーを更新するノードで上書きすることでこの問題を解決できるようです。

ご指摘ありがとうございました。
・個人の環境ですが実行時にすべてのAmbient音声が一瞬再生されてしまう問題があります。
自分の環境ではデフォルトの音量を0にして遅延を入れて音量を1に設定する処理を入れることで解決しています。
解決方法をご存じの方はコメントお願いします。

最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。
