【Unreal Engine】UE5の3Dサウンドとミキシング:距離で小さくなる音と、BGMだけ下げる仕組み

作成: 2026-07-20

音が距離で減衰しない、BGMだけ音量を下げられない。UE5のSound Attenuationによる距離減衰、Sound ClassとSound Mixによる音量の束ね方、Submixとリバーブまでを図解し、音量設定画面を作る実践つき。

足音を Play Sound 2D で鳴らしたら、敵が画面の端にいても足元にいても同じ音量で聞こえる。オプション画面にBGMの音量スライダーを付けようとしたら、音源ごとに Volume Multiplier を配るしかなく、音を足すたびに配線が増えていく。

UE5では、この2つはどちらもBlueprintの外側で解決します。 距離の減り方は Sound Attenuation アセット に、 音量のグループ分けは Sound Class に持たせるのが定石です。この記事では、2D再生と3D再生の違いから、距離減衰の設定、Sound ClassとSound Mixによる音量管理、Submixとリバーブまでを解説します。

距離で小さくなる音と、種類ごとに束ねられた音量つまみのイメージ

この記事でわかること

  • 2D再生と3D再生 の違いと、それぞれの再生ノード
  • 距離減衰は Sound Attenuation アセット が決める(Inner RadiusFalloff Distance
  • Sound Class でBGM・SE・ボイスを束ね、 Sound Mix で一時的に押し下げる
  • Submix / Audio Volume で空間の響きを作る
  • 実践: 音量設定画面と、距離で消える環境音

Sponsored

2D再生と3D再生を分ける

最初に決めるのは、その音に 「鳴っている場所」があるかどうか です。

2D再生は位置を持たず常に同じ音量、3D再生は座標を持ち距離と方向が付くという対比図
2D再生3D再生
位置持たないワールド座標を持つ
距離で小さくなるかならないAttenuation次第でなる
左右に定位するかしないする
向くものBGM、UIのクリック音、ナレーション足音、たき火、銃声、敵の唸り声

再生ノードは4つ覚えれば足ります。

ノード位置戻り値使いどころ
Play Sound 2DなしなしUI音、単発の通知音
Play Sound at Location指定した座標なし爆発、着弾など 鳴らしっぱなしでよい単発音
Spawn Sound 2DなしAudio ComponentBGMなど、あとから止めたい2D音
Spawn Sound at Location指定した座標Audio Componentあとから止めたい・音量を変えたい音
Spawn Sound Attached付けたActorに追従Audio Component動く物から出る音(エンジン音、松明)

ここで見落としやすいのが 戻り値の有無 です。 Play で始まるノードは撃ちっぱなし で、Audio Componentを返しません。つまり あとから止められません 。ループする環境音やBGMを Play 系で鳴らしてしまうと、レベルを抜けるまで止まらない音ができあがります。 止める可能性がある音は Spawn Sound を使ってください。実行中にパラメータを送りたいときも同じで、戻り値のAudio Componentが必要になります(→ MetaSoundsの記事)。

レベルに置きっぱなしの環境音なら、Blueprintを書く必要すらありません。Place Actorsパネルの Ambient Sound アクターを置き、Sound に音を指定するだけで、その場所で鳴り続けます。

補足: ゲーム内の「音」と、AIが聞き取る「音」は別物です。スピーカーから出る音をAIが勝手に聞くわけではなく、AIの聴覚には別途 Report Noise Event で知らせます(→ AI Perceptionの記事)。

Sponsored

距離減衰はアセットが持つ

3D再生にしただけでは、まだ距離で小さくなりません。 減り方を書いた設計図 が要ります。それが Sound Attenuation アセットです。

コンテンツブラウザで右クリック → SoundsSound Attenuation で作成します。名前は ATT_Ambient のように付けておくと分かりやすくなります。

Inner Radiusの内側は最大音量、そこからFalloff Distanceぶんかけて音量が0になることを同心円で示した図

アセットを開くと項目が並びますが、まず触るのは Attenuation (Volume) の中の3つだけです。

項目意味決めること
Attenuation Shape減衰する範囲の形通常は Sphere のまま
Inner Radiusこの距離までは最大音量音が「近い」と感じる範囲
Falloff DistanceInner Radiusの先、 音量が0になるまでの距離音が届く広さ

大事なのは、この2つが 足し算 だということです。

聞こえなくなる距離 = Inner Radius + Falloff Distance

Inner Radius 300Falloff Distance 1500 なら、3m以内では最大音量、そこから18mへ向けて減っていき、 18mを超えると完全に無音 になります(UEの1ユニットは1cmです)。

減り方のカーブは Attenuation Function で選びます。

種類特徴
Linearまっすぐ減る。分かりやすいが、近距離での変化が鈍い
Logarithmic近くで急に落ちる
Inverse現実の物理に近い落ち方
Natural Sound耳で自然に感じるよう調整されたカーブ
Custom自分でカーブを描く

迷ったら Natural Sound から試すと、極端な結果になりにくいです。

作ったアセットは、次のどこかに割り当てます。

割り当て先効果の範囲
Sound Wave / Sound Cue の Attenuation Settingsその音を どこで鳴らしても 効く
Audio Component / Ambient Sound の Attenuation Settingsその配置ぶんだけ効く
Play Sound at LocationAttenuation Settings ピンその1回の再生だけ

同じ種類の音は、1つのAttenuationアセットを共有させてください。 足音・薬莢・小物の音がすべて ATT_SmallSFX を見ていれば、「効果音の聞こえる範囲が全体的に狭い」と感じたとき、直す場所は1箇所です。

空間化(Spatialization)とステレオ音源

同じアセットの Attenuation (Spatialization) にある Enable Spatialization は、 音を左右に定位させるか の設定です。距離減衰とは別物で、片方だけ有効にすることもできます。

注意したいのは ステレオ音源 です。空間化されたステレオ音は、左右のチャンネルが 3D Stereo Spread で指定した幅を持つ 2つの点音源 として扱われます。広がりを持たせて作ったBGMにAttenuationを付けると、この扱いになって意図した音像が崩れます。 BGMやナレーションは2D再生のまま にしてください。

Sound Classで音を束ねる

「BGMだけ下げたい」を音源ごとの Volume Multiplier で解決しようとすると、音を追加するたびに設定が増えていきます。UEはこれを カテゴリ で扱います。

右クリック → SoundsSound Class で作成し、音の種類ごとに用意します。

SC_Masterの下にSC_BGM・SC_SE・SC_Voiceがぶら下がり、各Sound Waveがどれかに属するツリー図

Sound Classは 親子関係 を持てます。親のSound Classを開き、Child Classes に子を追加すると階層になります。

SC_Master
├─ SC_BGM
├─ SC_SE
└─ SC_Voice

こうしておくと、 SC_Master の音量を変えるだけで全体が動きます 。マスターボリュームのスライダーは、この親を触るだけで作れます。

割り当ては音の側で行います。Sound Wave または Sound Cue を開き、詳細パネルの Sound Class に該当するクラスを指定してください。

未設定のまま鳴らすとどうなるか。 Sound Class が空の音は、どのカテゴリにも属さない扱いになります。この状態で「SEだけ下げる」を作っても、その音だけ下がりません。 音を追加したら Sound Class を設定する を習慣にしてください。

Sound Mixで一時的に押し下げる

Sound Classは 分類 で、それ自体は音量を動かしません。 どのクラスをどれだけ変えるか を書くのが Sound Mix アセットです(右クリック → SoundsSound Mix)。

メニューを開いた瞬間にBGMだけ下がり、SEの音量は変わらないことを示す図

Sound Mixを開くと Sound Class Effects という配列があり、1エントリごとに次を指定します。

項目意味
Sound Class Object対象のSound Class
Volume Adjuster音量の倍率(1.0が等倍)
Pitch Adjusterピッチの倍率
Apply to Children子クラスにも適用するか

たとえば SM_MenuDuck に「SC_BGM の Volume Adjuster を 0.3」と1件だけ書いておけば、 BGMを3割まで絞り、SEはそのまま というミックスができます。

適用と解除はBlueprintの2ノードです。

ノード引数動き
Push Sound Mix ModifierIn Sound Mix ModifierそのMixを有効にする
Pop Sound Mix ModifierIn Sound Mix ModifierそのMixを解除する
(メニューを開く)  → Push Sound Mix Modifier(In Sound Mix Modifier: SM_MenuDuck)
(メニューを閉じる)→ Pop Sound Mix Modifier (In Sound Mix Modifier: SM_MenuDuck)

これで「ポーズ中はBGMが引っ込む」が完成します(→ ポーズメニューの記事)。

スライダーで音量を変えるノード

一方、オプション画面の音量スライダーは、値が連続的に変わります。この用途には Set Sound Mix Class Override を使います。

引数意味実用的な値
In Sound Mix Modifier書き込む先のSound MixSM_UserAudio
In Sound Class対象のSound ClassSC_BGM
Volume音量の倍率スライダーの値(0.0〜1.0)
Pitchピッチの倍率1.0
Fade In Time変化にかける秒数0.1(既定は1.0)
Apply to Children子クラスにも適用するかtrue

1つ落とし穴があります。 オーバーライドは、そのSound Mixがアクティブでなければ効きません。 ゲーム開始時に一度 Push Sound Mix Modifier でMixを有効にしておき、スライダーからは Set Sound Mix Class Override だけを呼ぶ形にしてください。「スライダーを動かしても何も起きない」の原因は、ほぼこれです。

Fade In Time の既定は 1.0 秒です。スライダーに使うと反応が1秒遅れて感じるので、 0.1 程度まで下げます。

Sponsored

SubmixとAudio Volumeで響かせる

ここまでは音量の話でした。 リバーブやEQといった加工 は、また別の経路を通ります。

音源からSubmixを経てMasterへ流れる経路と、Audio Volumeが空間ごとに響きを足す図

すべての音は、最終的に Master Submix へ流れ込みます。その途中に自分で作った Sound Submix を挟むと、そこを通る音 全体 に対してエフェクトを掛けられます。

仕組み掛かる対象
Source Effect個々の音源特定の声だけ無線っぽく歪ませる
Sound SubmixそのSubmixに流れる音全体BGM全体にコンプレッサー
Audio Volumeその空間にいる間の音洞窟のリバーブ

Submixは右クリック → SoundsSound Submix で作り、アセット内の Submix Effect Chain にエフェクトプリセット(Submix Effect Dynamics ProcessorSubmix Effect Submix EQ など)を追加します。音の側は、Sound Wave / Sound Cue の詳細パネルにある Sound Submix で流し先を指定します。

実行中に音量だけ変えたいなら、Submixに対して Set Submix Output Volume を呼べます。

空間ごとの響きはAudio Volumeで

「洞窟の中だけ響かせる」は、Submixではなく Audio Volume が担当です。Place Actorsパネルから配置し、洞窟を覆うサイズに広げて、詳細パネルの Reverb で設定します。

項目内容
Apply Reverbチェックを入れる
Reverb EffectReverb Effect アセット(右クリック → SoundsReverb Effect で作成)
Volume響きの強さ
Fade Time出入りしたときの切り替わりにかかる秒数

音の側には何も設定しません。 プレイヤーがボリュームの内側に入ると響き、出ると戻ります。同じ足音が、屋外では乾いて、洞窟では反響します。

ここで1つ、つまずきやすい仕様があります。 リバーブは Attenuation の Reverb Send 経由で送られます。 そのため、 Attenuationを持たない2D再生の音には、Audio Volumeのリバーブが掛かりません 。3Dで鳴らしているはずの足音が響かないときは、その足音にAttenuationが割り当たっているかを確認してください。

Sponsored

実践:音量設定画面と、距離で消える環境音

RPGのオプション画面、ホラーゲームの環境音、探索ゲームのたき火。 「BGMとSEを別々に調整できる」と「音源から離れると聞こえなくなる」 は、ジャンルを問わず必ず必要になります。この2つを同時に組みます。

完成形

BGMスライダーを半分にするとBGMだけが小さくなり、たき火の音は変わりません。そしてたき火から歩いて離れると、18mの地点で完全に聞こえなくなります。

スライダーでBGMだけが下がり、たき火から離れると環境音だけが消えていく様子を示した図

再現条件

Third Person テンプレート で新規プロジェクトを作り、次を用意します。音素材はループするBGMと、たき火のような環境音の2つがあれば足ります。

種類名前設定
Sound WaveSW_BGMLooping をオン、 Sound ClassSC_BGM
Sound WaveSW_FireLooping をオン、 Sound ClassSC_SEAttenuation SettingsATT_Ambient
Sound ClassSC_MasterChild ClassesSC_BGMSC_SE を追加
Sound ClassSC_BGM / SC_SE作るだけ
Sound MixSM_UserAudioSound Class Effects に2件(下表)
Sound AttenuationATT_AmbientInner Radius 300.0Falloff Distance 1500.0Attenuation Function Natural Sound
Widget BlueprintWBP_AudioSettingsSlider_BGMSlider_SE を配置
レベルAmbient Sound アクターSoundSW_Fire 。プレイヤー開始地点から少し離れた場所へ

SM_UserAudioSound Class Effects は2件です。

#Sound Class ObjectVolume AdjusterApply to Children
0SC_BGM1.0true
1SC_SE1.0true

WBP_AudioSettings のスライダーは、2つとも次の初期値にします。

項目
Min Value0.0
Max Value1.0
Value1.0
Is Variableチェック(Blueprintから参照するため)

ステップ1:Mixを起動時に押しておく

BP_ThirdPersonGameMode を開き、Event BeginPlay に次をつなぎます。BGMもここで鳴らします。

Event BeginPlay(BP_ThirdPersonGameMode)
  → Push Sound Mix Modifier(In Sound Mix Modifier: SM_UserAudio)
  → Play Sound 2D(Sound: SW_BGM)
  → Create Widget(Class: WBP_AudioSettings)→ Add to Viewport

Push Sound Mix Modifier が先 です。この1ノードが無いと、次のステップのオーバーライドは何も起こしません。

BGMを Play Sound 2D で鳴らしているのは意図的です。Attenuationを通さないため距離の影響を受けず、ステレオの広がりもそのまま残ります。ここでは1つのレベルで鳴らしっぱなしにするので撃ちっぱなしで足りますが、 曲を止めたり切り替えたりする作りにするなら Spawn Sound 2D に変えて、戻り値のAudio Componentを保持 してください。

ステップ2:スライダーから音量を書き換える

WBP_AudioSettings のグラフで、各スライダーの On Value Changed イベントを作ります。デザイナー上でスライダーを選び、詳細パネル下部のイベント一覧から On Value Changed+ を押すと生成されます。

Slider_BGMのOn Value ChangedからSet Sound Mix Class Overrideへ、Valueがそのまま Volume ピンへ入るノードグラフ
Event On Value Changed(Slider_BGM)  ── Value ─┐
  → Set Sound Mix Class Override                │
      In Sound Mix Modifier : SM_UserAudio      │
      In Sound Class        : SC_BGM            │
      Volume                : ←────────────────┘  (Value をそのまま接続)
      Pitch                 : 1.0
      Fade In Time          : 0.1
      Apply to Children     : true

Event On Value Changed(Slider_SE)  ── Value ─┐
  → Set Sound Mix Class Override                │
      In Sound Mix Modifier : SM_UserAudio      │
      In Sound Class        : SC_SE             │
      Volume                : ←────────────────┘
      Pitch                 : 1.0
      Fade In Time          : 0.1
      Apply to Children     : true

2本とも形は同じで、 In Sound Class だけが違います 。ボイスやUI音を足すときも、Sound Classとスライダーを1組ずつ増やすだけで済みます。

ステップ3:マウスを使えるようにする

Third Personテンプレートのままだとカーソルが出ないため、スライダーを操作できません。BP_ThirdPersonGameModeBeginPlay に足します。

→ Get Player Controller → Set Show Mouse Cursor(true)

確認する

Playして、次の3つを順に確かめてください。

  1. BGMスライダーを中央(0.5)へ動かす。 BGMだけが半分の音量になり、 たき火の音は一切変わりません
  2. SEスライダーを0へ動かす。 たき火の音が消え、 BGMは鳴り続けます
  3. 両方を1.0に戻し、たき火から歩いて離れる。 3m地点までは音量が変わらず、そこから徐々に小さくなり、 18mで完全に無音 になります

3つ目の距離は目測でも構いませんが、正確に見たいときはコンソールで stat unit ではなく、たき火のActorとプレイヤーの距離を Print String で出すと確認できます(→ Print Stringの記事)。

うまくいかないときの切り分けです。

  • スライダーを動かしても何も変わらないPush Sound Mix Modifier を呼んでいない。オーバーライドはMixがアクティブでないと効きません
  • BGMを下げると、たき火の音も一緒に下がるSW_FireSound Class が未設定。どのクラスにも属していないか、SC_Master 直下になっています
  • 離れても音量が変わらない → Ambient Soundの Attenuation Settings が空。または SW_Fire 側に割り当てたつもりでアクター側で上書きされています
  • すぐ聞こえなくなる/いつまでも聞こえるInner RadiusFalloff Distance合計 が聞こえる距離です。300+1500で18m
  • たき火の音が左右に振れず、真ん中で鳴る → その音素材がステレオです。3D再生する環境音はモノラルの素材を使ってください

ここで SW_FireSound ClassSC_BGM に付け替えて みてください。BGMスライダーを動かすと、たき火の音まで一緒に下がります。 音量の管理はSound Classの割り当てで決まる ことが、一度やってみるとはっきり分かります。

ポイントは2つです。

  • 音量はSound Classで束ね、Mixで一括して変える: 音源ごとに Volume Multiplier を配ると、音を追加するたびに設定漏れが起きます。 音を作ったらSound Classを割り当てる だけにしておけば、スライダー側は増やさずに済みます
  • 距離減衰はAttenuationアセットに集約する: 同じ性格の音は同じアセットを共有させます。「効果音が遠くまで届きすぎる」と感じたとき、直す場所が1つで済みます

設定した音量をゲーム終了後も保つには、スライダーの値をセーブデータへ書き出し、起動時に読み戻して同じノードを1回呼びます(→ セーブ/ロードの記事)。設定値の保持先には GameInstance Subsystem が向いています。

Sponsored

おまけ:先に知っておくと良いこと

  • 同時に鳴る音の数は Sound Concurrency で抑える: 敵が20体いて全員が足音を鳴らすと、音が団子になって割れます。Sound Concurrency アセットで「同じ種類は最大4個まで」「超えたら古い音を止める」を決められます。雑多な効果音には設定しておくと安定します
  • Volume Multiplier を1.0より上げない: 再生ノードの Volume Multiplier は割れる原因になります。音が小さいと感じたら、素材そのものの音量かSound Class側で調整してください
  • Attenuationの Shape は Sphere 以外も選べる: 廊下に沿った音なら Capsule 、部屋全体なら Box が自然です。ただし最初は Sphere で組み、必要になってから変えるほうが調整は速く進みます
  • Occlusion(壁越しのこもり)はコストがかかる: Attenuationの Enable Occlusion を入れると壁越しの音がこもりますが、音源ごとにトレースが走ります。全部の音に入れず、 重要な音だけ に絞ってください
  • エディタで音が鳴らないときはビューポート右上を見る: Play 中でも、エディタ設定やウィンドウのフォーカスによってはミュートされていることがあります。OS側のミキサーでUE5がミュートになっていないかも確認してください

まとめ

音を整える仕組みは、役割ごとに置き場所が分かれています。

決めたいこと使うもの
位置を持つか再生ノードの選択(2D / at Location / Spawn Attached)
距離でどう減るかSound AttenuationInner RadiusFalloff Distance
どのグループの音かSound Class
そのグループを今どれだけ鳴らすかSound MixSet Sound Mix Class Override
全体をどう加工するかSound Submix
空間でどう響くかAudio Volume

そして実務上の指針が1つ。 Blueprintに音量の数字を持たせない ことです。音量はSound Class、距離はAttenuation、響きはAudio Volume。それぞれのアセットに預けておけば、音を1つ追加したときに触るのは、その音のアセットだけで済みます。

あなたのゲームで、プレイヤーが最初に「音量を下げたい」と思うのはどの音でしょうか。