Unity:シーン実行中に音楽を鳴らしたい(BGMの再生方法)

unityのロゴ画像 Unity

シーン実行中に音楽(BGM)を鳴らすとぐんと臨場感があがります。ゲームっぽくなりますよね。
この記事では、Unityシーン実行中にBGMを再生する方法について解説します。併せてプレイヤーと音源との距離に応じた音の強弱のつけ方も解説しています。

シーンでBGMを鳴らす

まずは適当なシーンを準備してください。

今回準備したシーン(Terrainを使って適当に地形を作りました)

Hierarchyウインドウから

Create > Audio > Audio Source を選択します。

Audio Sourceは音源となります。スピーカーと考えてもいいと思います。

後で見たとき分かりやすいようにオブジェクト名をBGMと変更しておきます。

BGM(Audio Source)を選択してみると分かりますが、シーン上に姿はなくともXYZ方向のPositionはちゃんとあることが分かります。

Audio Sourceの配置場所ですが、単純にシーン上でBGMを鳴らすだけであればどこに配置しても問題ありません。
ただし後述する3D Sound Settingsオブジェクトとの距離に応じて音の強弱が変わる設定)を利用する場合にはAudio Sourceの配置が大きく関係してきます。

AssetsにBGM用の音源ファイルを追加

鳴らしたい音源ファイルをAssetsフォルダにドラッグ&ドロップで追加します。

今回はBGMとしてMP3形式のファイルを追加しました。(音源ファイルはこちらを利用)

ちなみにUnityで扱うことができる音声形式は拡張子で言うと

.mp3 .ogg .wav .aiff/.aif .mod .it .s3m .xm

となります。

詳しくはUnityドキュメントのオーディオファイルに記述されています。

音源ファイルをAudio Sourceに設定する

HierarchyウインドウのBGM(Audio Source)を選択しておきます。
シーン上で鳴らしたい音源ファイルをInspectorウインドウのAudio Source > Audio Clipにドラッグ&ドロップします。

もちろんAudioClipの右端にある小さい◎ボタンをクリックしてAssets内の音声ファイルを選択することも出来ます。

起動時に再生とループ再生について

起動時に再生したい場合は、Play On Awakeにチェックをいれます。
BGMが終了したら最初からまた再生(ループ再生)したい場合は、Loopにチェックを入れて下さい。

これで実行すると音声が再生されるはずです。

【動画】設定方法操作イメージ

ここまでの操作イメージです。

音源との距離に応じて音の強弱を変えるには(3D Sound Settings)

Unityではフィールドを動き回るプレイヤーと音源(Audio Source)との距離に応じて音の強弱を変更できる3D Sound Settingsがあります。

この機能を使うとプレイヤーが近づくにつれ音が大きくなったり、プレイヤーの右側から音が聞こえたりなどといった臨場感あふれるシーンが作成できます。

3D Sound SettingsにAudio Sourceを対応させる

シーンに配置したAudio Source(下記画面ではBGMに名称変更)のSpatial Blend3D側にすることで3D Sound Settingsを利用できるようになります。(デフォルトでは2D側になっている)

設定は以上ですが、このままでは確認できませんのでプレイヤーをシーンに配置して確認してみます。

シーンにプレイヤーを配置して音の強弱を確認

例としてUnity公式アセットStandard AssetsFirstPersonCharacterを利用します。

Standard Assets > Characters > FirstPersonCharacter > Prefabs にある

FPS Controllerをシーンにドラッグ&ドロップして配置します。

Standard AssetsのFPS Controllerは配置しただけでシーン内を一人称視点で自由に動き回れるプレハブです。(キー操作:十字キーで移動、スペースでジャンプ)

今回わたしが作ったシーンでは、音の強弱を確認するためプレイヤー(FPS Controller)と音源(Audio Source)をあえて離れたところに配置しました。

実行時のAudio Listener警告に注意

実は最初うまく行かず、近づいても音が大きく鳴りませんでした

実行時に次の警告文がConsoleタブに表示されていました。

There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.

Audio Listenerがシーン上に2つあるので1つにしてね」といった内容です。

Audio Listenerは人間でいうならです。
Unityでは耳(Audio Listener)がシーン上に2箇所以上あるとうまく行かないという事です。

Unityで最初からシーンに配置されているMain CameraにはAudio Listenerコンポーネントが追加されています。プレイヤーとして追加したFPS Controllerにもプレイヤーの耳としてAudio Listenerが追加されいるため生じたエラーでした。

プレイヤー自身にAudio Listenerがついている今回のような場合は、Main Camera側のAudio Listenerチェックを外すことで解決できます。

【動画】3D Sound効果はこんな感じ

3D Sound Settingsを適用させた際の効果イメージです。

3D Sound Settingsの設定について

3D Sound Settingsの設定をいくつか紹介しておきます。

どれ位の距離に近づくと音量レベルが最大になるかを設定するMin Distance
音量が弱まるのを止める距離を設定するMax Distance
ドップラー効果の度合い(救急車が通り過ぎる時の感じ?)を変更するDoppler Levelなどがあります。

必要に応じて設定してみて下さい。

以上、Unity:作ったシーンで音楽を鳴らしたい(BGMの追加方法)でした。

参考サイト

オーディオソース - Unity マニュアル
Audio Source は、シーン内で Audio Clip を再生します。クリップは AudioListenerや ...
魔王魂
魔王魂(森田交一)の音楽を無料ダウンロード。全曲フリーBGMとして使用可能です。

コメント

タイトルとURLをコピーしました