【Unreal Engine】UE5の3Dサウンドと音量設定:離れると小さくなる音、BGMだけ下げるスライダー

作成: 2026-07-20最終更新: 2026-09-06

たき火から離れると音が小さくなり、スライダーでBGMとSEを別々に調整する例を作ります。Sound Attenuation、Listener、Sound Class、Sound Mixの役割を整理し、Blueprintの接続とSubmix・残響の使い分けまで図解します。

遠くのたき火が、すぐそばにあるような大きさで聞こえる。BGMを下げたら、足音まで一緒に小さくなる。音が鳴るようになったら、次は「どこで、どのくらい聞こえるか」を整えたいところです。

今回は、距離による変化と、音の種類ごとの音量調整を分けて作ります。前者はSound Attenuation、後者はSound ClassとSound Mixを使います。

距離による音量変化と、BGM・SEなど種類ごとの音量調整

この記事でわかること

  • Sound Attenuationで、たき火から離れると小さくなる音を作る手順
  • 音を聞いている位置(Listener)がどこにあるか
  • Sound ClassとSound Mixで、BGMとSEを別々に上げ下げする方法
  • SubmixとAudio Volumeで部屋の響きを整える考え方

まずは、たき火から離れると音が小さくなるところまで試します。そのあとBGMとSEのスライダーを加え、同じレベルで両方の効果を確かめましょう。

Sponsored

音に「鳴っている場所」があるか

BGMはカメラが動いても同じように聞こえてほしい。たき火は、その場所へ近づくほど大きく聞こえてほしい。この違いで、再生方法を選びます。

BGMなど位置に依存しない2D再生と、たき火など位置を持つ再生の比較

2D再生は、ワールド内の位置による聞こえ方を使いません。BGMやボタン音に向いています。ステレオ素材の左右の広がりは、そのまま使えます。

位置を持つ再生は、足音、たき火、爆発音などに使います。そこへ、距離による音量変化や方向の設定を加えます。

ノード使う例再生後の操作に使う戻り値
Play Sound 2D一回鳴らすボタン音なし
Play Sound at Locationその場所に残す爆発音なし
Spawn Sound 2Dあとで止めたいBGMAudio Component
Spawn Sound at Locationあとで操作したい固定位置の音Audio Component
Spawn Sound Attached動く物に付いてくる音Audio Component

Audio Component は、再生している音を操作する部品です。Spawn系の戻り値を変数へ残すと、あとからその音にStopなどを呼べます。Play Sound系には、その操作用の戻り値がありません。

今回は、固定位置の環境音に Ambient Sound Actor を使います。音を置いて鳴らすためのActorで、Blueprintから再生ノードを呼ばずに試せます。

音の素材となるSound Waveと、鳴らし方をまとめるSound Cueについては、Sound WaveとSound Cueの記事で扱っています。

実践1:たき火から離れると小さくなる

Third Personテンプレートなど、歩き回れるレベルを使います。広い床を用意し、目印になるCubeを一つ置いてください。たき火の見た目がなくても、音の実験はできます。

音と配置を用意する

  1. ループ用のたき火の音を取り込み、Sound Waveを SW_Fire と名付ける。最初は、左右に分かれていないモノラルの素材が、方向を確認しやすい。
  2. SW_Fireを開き、「Looping」をオンにする。
  3. 「Virtualization Mode」を Play When Silent にする。
  4. SW_Fireをレベルへドラッグし、作られたAmbient SoundをCubeの位置へ置く。
  5. Ambient Soundの「Auto Activate」をオン、Volume MultiplierとPitch Multiplierを1.0にする。

Loopingは、素材が終わったら繰り返す設定です。Auto Activateは、Play開始時にそのActorが音を鳴らし始める設定です。この二つは別の役割です。

Play When Silentは、聞こえない間も再生を続ける設定です。この小さな実験では、範囲外へ出たり音量を0にしたりしたあと、また聞こえる状態へ戻しやすくするために使います。無音でも音の処理は続くので、大量の環境音への使い方はあとで見直します。

減衰アセットを割り当てる

Attenuation(減衰) は、離れるにつれて音を小さくすることです。その設定をまとめたSound Attenuationアセットを作ります。

コンテンツブラウザで右クリックし、音のカテゴリから「Sound Attenuation」を選び、ATT_Ambient と名付けます。

項目設定
Enable Volume Attenuationオン
Attenuation FunctionLinear
Attenuation ShapeSphere
Inner Radius300
Falloff Distance1500
Enable Spatializationオン
Spatialization MethodPanning

作ったATT_Ambientを、レベルに置いたAmbient Soundの「Attenuation Settings」へ指定します。「Override Attenuation」はオフ、「Allow Spatialization」はオンにします。

Override Attenuationは、その配置だけで設定を上書きするスイッチです。今回は共通アセットの値を使うので、オフにしておきます。

3mまでは倍率1、そこから18mまで小さくなり、18m以遠で0になるLinearの設定例

Sphereは球状の範囲です。Inner Radiusは中心から減衰を始めるところまで、Falloff Distanceはその先の幅を表します。標準単位はcmなので、今回の範囲は次のようになります。

音を聞く位置までの距離今回のLinearによる音量倍率
3mまで1.0
3mから18m距離に応じて1.0から0へ下がる
18m以遠0

300+1500=1800cm、つまり18mです。1500を「中心からの距離」と読まないことがポイントです。

保存してPlayし、Cubeの近くから離れてみます。近くでは大きく、離れると小さくなり、近づき直すと再び聞こえれば、最初の段階は成功です。

Linearは、一定の距離を進むごとに、倍率も一定ずつ下がるカーブです。ここでは結果をつかみやすいので選びました。Natural Soundなど別のカーブでは、範囲外の扱いも設定によって変わります。今回の「18mで0」を、すべてのカーブに当てはめないようにしてください。

どこからの距離で聞いている?

音量の距離を測る相手は、Listener(リスナー)=ゲーム内の「耳」の位置です。通常はカメラ側にあります。

三人称のキャラクターと後方のカメラを分け、音源からListenerまでの距離を示す

三人称では、キャラクターが音源へ近づいても、カメラは少し後ろにいます。キャラクターの足元から18mを測って、聞こえ方とぴったり一致しないことがあるのはこのためです。高さも含む空間内の距離で考えます。

また、Spatialization(空間化) は、「左にある音が左から聞こえる」といった方向をつける設定です。今回のPanningは、左右などの出力のバランスで方向を表します。距離減衰とは別なので、片方だけを使うこともできます。

ステレオ素材でも空間化は可能ですが、左右のチャンネルの広がりが関係します。初めはモノラルのたき火で、近づく・離れる・横を向く、の違いを聞くと分かりやすくなります。

Sponsored

Sound ClassでBGMとSEを分ける

次は、たき火の音はそのままで、BGMだけ小さくできるようにします。そこで使うのが Sound Class=音を種類ごとにまとめる分類です。SEは、足音やたき火などの効果音を指します。

コンテンツブラウザの音のカテゴリからSound Classを三つ作ります。

アセット今回の役割
SC_MasterBGMとSEをまとめる親
SC_BGM曲をまとめる
SC_SEたき火や足音をまとめる

SC_Masterを開き、Child ClassesへSC_BGMとSC_SEを追加します。各ClassのVolumeとPitchは、まず1.0のままにします。

SC_Masterの下へBGMとSEのClassを置き、音素材をそれぞれへ分類する

Sound Class自身にもVolumeがあります。 親の音量を変えると子にも影響するので、全体と種類別の音量を整理できます。今回はClassの基本値は1.0にして、操作中の変更をSound Mixへ持たせます。

ループ用のBGMを取り込み、SW_BGM と名付けます。二つのSound Waveを次のように設定してください。

アセットSound ClassLoopingVirtualization Mode
SW_BGMSC_BGMオンPlay When Silent
SW_FireSC_SEオンPlay When Silent

新しい音にはプロジェクトの既定Classが割り当たる場合があります。名前がBGMやSEになっているだけで自動分類されるわけではないので、音の「Sound Class」を確認しましょう。

Sound Mixで音量の倍率を変える

Sound Mix は、Sound Classへ適用する音量などの調整をまとめるアセットです。たとえば「BGMは0.5倍、SEは1.0倍」という変更を持たせられます。

コンテンツブラウザの音のカテゴリからSound Mixを作り、SM_UserAudio と名付けます。開いて、Sound Class Effectsへ次の2件を追加してください。

Sound Class ObjectVolume AdjusterPitch AdjusterApply to Children
SC_BGM1.01.0オン
SC_SE1.01.0オン

Mixの「Initial Delay」と「Fade in Time」は0、「Duration」は-1にします。開始後に時間切れで解除されない設定として使います。

1.0はそのまま、0は無音になる倍率です。0.5は音の信号を半分にする値で、「体感で半分の大きさ」と同じ意味ではありません。

このMixを有効にするのが Push Sound Mix Modifier です。今回はレベル開始時に一度だけ呼びます。スライダーを動かすたびに呼ぶ必要はありません。

値の変更には Set Sound Mix Class Override を使います。Overrideは、ここでは「そのMixにあるClassの調整値を書き換える」という意味です。

SM_UserAudioがClassごとの倍率を持ち、Pushで有効化、Set Overrideで書き換える

実践2:BGMとSEのスライダーを作る

ここからは、今のレベルに小さな音量パネルを表示します。BGMを流し、二つのスライダーからSM_UserAudioを書き換えます。ゲームを止めずに聞き比べるための確認用UIです。

画面左上のBGMとSEのスライダーを使い、たき火の近くで音を聞き比べる完成イメージ

1. Widgetを作る

Widgetは、画面に表示するUIの部品です。今回は二つのスライダーを、一つの音量パネルへまとめます。

コンテンツブラウザの「User Interface」からWidget Blueprintを作り、WBP_AudioSettings と名付けます。DesignerにCanvas Panelを置き、その子にVertical Boxを追加して、左上へ配置します。Canvas Panelは配置の土台、Vertical Boxは子の部品を縦に並べる容器です。

Vertical Boxの中へ、上からText「BGM」、Slider、Text「SE」、Sliderを置きます。二つのSliderを Slider_BGMSlider_SE と名付けてください。

Sliderの項目設定
Min Value0
Max Value1
Value1
Is Variableオン
Is Focusableオフ

パネルは画面の一部に収まる大きさにします。Canvas PanelのVisibilityは「Not Hit-Testable (Self Only)」にして、子のSliderは操作できる状態にします。全面を覆うBorderなどは、今回は不要です。

Is Focusableをオフにするのは、スライダーがキーボード操作を受け取り続けるのを避けるためです。音量を触ったあと、3D画面へ戻って歩き回りやすくします。

2. 開始時の処理を三つへ分ける

レベルのツールバーからLevel Blueprintを開きます。Event BeginPlayへ Sequence をつなぎ、「Add pin」で出力をThen 0・Then 1・Then 2の三つにします。

Sequenceは、出力を上から順に実行へ進めるノードです。ここでは、音の準備、UIの表示、入力の設定へ分けます。BGMが終わるまで待つ、という意味ではありません。

BeginPlayからSequenceへ進み、音・UI・入力を順に準備する

以下の図は、同じ一つのSequenceから出る枝を分けて描いたものです。BeginPlayやSequenceを三つ作る必要はありません。

3. Then 0:Mixを有効にしてBGMを鳴らす

Then 0から Push Sound Mix Modifier → Play Sound 2D と、白い実行線をつなぎます。

ノード設定
Push Sound Mix ModifierIn Sound Mix Modifier=SM_UserAudio
Play Sound 2DSound=SW_BGM、Volume Multiplier=1.0、Pitch Multiplier=1.0
Mixを有効にしてから、位置に依存しないBGMを再生する接続

今回は一つのレベルで鳴らし続けて比較するので、Play Sound 2Dを使います。曲を止めたり切り替えたりする仕組みへ広げるなら、Spawn Sound 2Dの戻り値を保持する形にします。

4. Then 1:パネルを表示する

Then 1から Create Widget → Add to Viewport とつなぎます。

Create WidgetのClassをWBP_AudioSettingsにし、「Owning Player」へ Get Player Controller(Player Index=0) のReturn Valueをつなぎます。Create WidgetのReturn Valueは、Add to ViewportのTargetへつなぎます。

Player Controllerは、プレイヤーの入力などを扱うActorです。ここではIndex 0で一人目のプレイヤーを取得し、その人が使うパネルとして作ります。

自分のPlayer ControllerをOwning Playerに指定してWidgetを作り、そのWidgetを画面へ追加する

Create Widgetの戻り値は、今作ったパネルそのものです。そのパネルをAdd to Viewportへ渡すことで画面に表示します。

5. Then 2:マウスとゲーム入力を使えるようにする

Then 2から Set Input Mode Game And UI → Set Show Mouse Cursor とつなぎます。Set Show Mouse Cursorは、Get Player ControllerのReturn Valueから線を引いて検索すると見つけられます。

この枝にもGet Player Controller(Player Index=0)を置き、そのReturn Valueを、Game And UIのPlayer Controllerと、Show Mouse CursorのTargetへつなぎます。

項目設定
In Widget to Focus未接続
In Mouse Lock ModeDo Not Lock
Hide Cursor During Captureオフ
Show Mouse Cursorオン
同じPlayer ControllerへGame And UIとカーソル表示を設定する接続

Game And UIは、UIが使う入力をUIへ渡し、それ以外をゲーム側にも渡すモードです。カーソルを表示するだけでは入力のモードは変わらないので、両方を設定します。

6. SliderからClassの音量を書き換える

WBP_AudioSettingsへ戻り、DesignerでSlider_BGMを選びます。詳細のEventsから「On Value Changed」の+を押します。

このイベントは、スライダーの値が変わったときに呼ばれます。白い実行出力を Set Sound Mix Class Override へ、数値のValueをそのノードのVolumeへつないでください。

BGMスライダーのValueをVolumeへ渡し、SM_UserAudio内のSC_BGMの倍率を更新する
引数設定
In Sound Mix ModifierSM_UserAudio
In Sound ClassSC_BGM
VolumeイベントのValue
Pitch1.0
Fade in Time0.1
Apply to Childrenオン

Fade in Timeは、今の音量から新しい音量へ移る秒数です。ここでは0.1秒でなめらかに変えます。

Slider_SEにもOn Value Changedを追加し、同じ接続を作ります。違いは In Sound Class=SC_SE だけです。MixはどちらもSM_UserAudioを指定します。

Blueprintをコンパイルして保存してください。スライダーとMixの初期値はどちらも1.0なので、最初は両方の音が元の倍率で鳴ります。

Sponsored

聞こえ方を確かめる

たき火が聞こえる近さでPlayし、スライダーを操作します。操作後に歩くときは、パネル以外の3D画面をクリックしてからWASDを使ってください。

試すこと聞く結果
BGMを0.5へBGMだけが小さくなり、たき火は変わらない
SEを0へたき火が聞こえなくなり、BGMは鳴り続ける
SEを1へ戻すたき火がまた聞こえる
両方1でたき火から離れるBGMは同じ、たき火だけ距離で小さくなる
たき火へ近づき直すたき火が再び大きくなる
種類別の音量変更と、Listenerが離れたときの距離減衰を別々に確かめる

最後にPlayを止め、SW_FireのSound Classを一度SC_BGMへ変えてみます。再びPlayすると、BGMスライダーでたき火まで小さくなります。「どのスライダーで変わるか」は、音のClassへの割り当てで決まることが確かめられます。確認後はSC_SEへ戻してください。

SubmixとAudio Volumeで響きを整える

ここまでの実践は、距離と音量の調整です。さらに、複数の音をまとめて加工したり、部屋の響きを加えたりしたくなったら、次の仕組みを使います。

Submix:音を集めて加工する先

Submix は、複数の音を集める経路です。そこへエフェクトを置くと、集まった音をまとめて加工できます。

音をSubmixへ集め、エフェクトを通して最終出力へ送る流れ

Sound Submixアセットを作り、「Submix Effect Chain」へエフェクトのプリセットを追加します。音側は「Base Submix」(版によってSound Submix)などの流し先を指定します。

たとえば EQ は、低い音や高い音の強さを調整する加工です。Dynamics Processor は、大きな音を抑えるなど、音量の変化を整える加工に使えます。

Sound Classが分類と設定をまとめるもの、Submixが音を集めて加工する経路、と考えると使い分けやすくなります。今回のBGM・SEスライダーを作るために、Submixも追加する必要はありません。

Audio Volume:場所に応じて響きを変える

リバーブ(残響) は、洞窟などで音が反射して残るような響きです。Audio Volume は、その響きなどを変える領域をレベルへ置くActorです。

洞窟を覆うAudio VolumeにListenerが入ると、設定した残響へ切り替わる

試すならAudio Volumeを配置して洞窟や部屋を覆い、次を設定します。

項目設定の例
Apply Reverbオン
Reverb Effect用意したReverb Effectアセット
Volume0.5
Fade Time0.5秒

音側も残響へ送る必要があります。たき火で試すならATT_Ambientの「Enable Reverb Send」をオンにし、Reverb Send MethodをManual、Manual Reverb Send Levelを0.5にします。Sound Class側の「Send to Master Reverb」も確認します。

これは、音の一部を残響の処理へ送る設定です。音を流したままListenerが領域を出入りし、響きが切り替わるかを確かめます。2D音にも別のリバーブ送りの設定があるので、「2Dだから一切響かない」とは限りません。

うまくいかないとき

症状確認するところ
たき火が一度で終わるSW_FireのLoopingとAmbient SoundのAuto Activate
離れても変わらない2Dで鳴らしていないか、ATT_Ambientの割り当て、Enable Volume Attenuation、Override
距離と聞こえ方が合わないキャラクターでなくListenerから測っているか、Linearか、300と1500の読み方
左右の方向が分からないEnable Spatialization、Allow Spatialization、実際の音源とカメラの位置
スライダーが触れないGame And UI、Show Mouse Cursor、SliderのIs Enabled、手前を覆うUI
スライダーで変わらないMixを有効にしたか、OverrideのMix/Class、Value→Volumeの接続
BGMとSEが一緒に下がるSW_FireのClassがSC_BGMになっていないか、親Classを変更していないか
0から戻しても聞こえない音がまだ再生中か、LoopingとPlay When Silent
残響が変わらないAudio Volume、Listenerの位置、Reverb Effect、音側のリバーブ送り

おまけ:ゲームへ組み込むとき

メニュー中だけBGMを下げる

ユーザー設定とは別に、メニュー中だけ音を引っ込めるなら、SM_MenuDuck のような別Mixを用意します。SC_BGMのVolume Adjusterを0.3、Pitch Adjusterを1.0、MixのDurationを-1にします。

メニュー用Mixを適用した間、BGMだけ音量を下げる

メニューを開くときにPush Sound Mix Modifier、閉じるときにPop Sound Mix Modifierで同じMixを指定します。PushとPopは対応させ、開いている間にPushを繰り返さないようにします。実際にゲームをポーズする場合は、BGMの「Is UISound」など、ポーズ中も鳴らす設定も確認します。

設定値を保存する

今回のスライダーはPlayを始め直すと1.0へ戻ります。設定を残すには値を保存し、起動時に読み戻して、MixのOverrideとスライダーの表示値の両方へ反映します。セーブ/ロードゲーム設定画面の記事へ続きます。

音が増えたら調整する

Play When Silentは、無音の間も再生の処理を続けます。多数の環境音を置く段階では、必要な音だけに使い、同時再生数を扱うSound Concurrencyなどと合わせて見直します。

また、音量倍率を上げすぎたり、多数の音を重ねたりすると音が割れることがあります。Sound Classへ設定場所を移しても、それだけで音割れを避けられるわけではありません。ゲーム中の音をまとめて聞いて調整します。

プレイヤーが聞く音と、AIの聴覚も別の仕組みです。敵へ物音を知らせる場合は、AI Perceptionの記事のReport Noise Eventなどを使います。

まとめ

距離による聞こえ方はSound Attenuation、種類別の音量はSound ClassとSound Mixで整えます。今回は、たき火へ近づく・離れる操作と、BGM・SEのスライダーで、その違いを確かめました。

音を追加するときも、同じ性格なら減衰アセットを共有し、該当するClassへ分類できます。音源ごとに設定を増やす前に、「どの距離で聞かせたいか」「どの音量設定に従わせたいか」を決めてみてください。

参考資料

Unreal Engine このセクションのノート98