🙆

ゲーム開発で必須なUnity×C#×コンポーネント:【AudioSource】で極めるサウンド演出術

2025/01/13に公開

UnityとC#でマスターするオーディオコンポーネント

ゲームの世界観を大きく左右する要素の一つが“音”です。BGMや効果音がないと、どんなにグラフィックが美しくても味気ない作品になってしまいます。Unityには、オーディオに関するさまざまなコンポーネントが標準で用意されており、C#スクリプトから自由に制御できます。本記事では、ゲーム開発でよく使うオーディオコンポーネントの仕組みと使い方を解説します。

音が鳴らせずに困っている方、音量や再生タイミングをスクリプトで操作したい方はぜひ参考にしてください。

1. なぜオーディオコンポーネントが重要なのか

  • ゲームの世界観を盛り上げるBGM
  • 攻撃やジャンプなど、行動に合わせた効果音
  • 臨場感あふれる3D音響(敵の足音が後ろから聞こえるなど)

これらを実現するためには、単にサウンドファイルを流すだけでなく、音量、再生位置、空間的な配置といったパラメータを細かく制御する必要があります。Unityのオーディオコンポーネントを理解すれば、音の扱いがグッとラクになるでしょう。

2. AudioSourceとAudioListenerの基本

AudioListener

  • ゲーム内で「耳」の役割を果たすコンポーネント
  • 通常、メインカメラに一つだけアタッチしておけばOK
  • 3Dサウンドを扱うときに必要不可欠

AudioSource

  • 再生したい音を持つコンポーネント
  • ゲームオブジェクトにアタッチして、BGMやSEを発生させる
  • AudioClipを割り当てたり、空間再生の設定をしたりできる

3. AudioClipで音源をセットしよう

AudioClipとは

  • 実際の音のデータを扱うためのアセット
  • .wav, .mp3, .ogg などが利用可能
  • UnityのInspectorで「Load Type」や「Compression」を調整することで、音質やメモリ使用量を最適化できる

AudioSourceのAudioClip欄にドラッグ&ドロップすれば、そのAudioSourceが管理する音源が決まります。

public class BGMPlayer : MonoBehaviour
{
    public AudioClip bgmClip;
    private AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioSource.clip = bgmClip;
        audioSource.loop = true; // ループ再生
        audioSource.Play();
    }
}

上記のようにC#スクリプトでAudioClipを設定し、Play() メソッドで再生させる方法が最も基本的です。

4. 音量調整や再生・停止をC#で操作

音量やピッチの変更

AudioSourceは、以下のプロパティを使って音量や再生速度を自由に変えられます。

  • audioSource.volume : 音量(0〜1の範囲で指定)
  • audioSource.pitch : 再生速度(1が等倍、2なら2倍速)
public class VolumeController : MonoBehaviour
{
    public AudioSource audioSource;

    void Update()
    {
        // 上矢印キーで音量アップ、下矢印キーで音量ダウン
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            audioSource.volume += 0.1f;
        }
        else if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            audioSource.volume -= 0.1f;
        }
    }
}

ゲームのイベントに合わせて数値を変化させると、迫力ある演出が簡単に作れます。

一時停止や再開

audioSource.Pause()audioSource.UnPause() を使うと、一時停止や再開が可能です。また audioSource.Stop() は停止と同時に再生位置が先頭に戻る点がPause()と異なります。

5. 3Dサウンドで臨場感を演出

ゲーム内で「敵の足音が後ろから聞こえる」「近づくと音が大きくなる」といった効果を出したいなら3Dサウンドの設定が鍵です。AudioSourceにはSpatial Blendというパラメータがあり、これを1.0(3D寄り)にすると音が空間的に再生されるようになります。

距離で音量を変える

パラメータ 説明
Min Distance これより近いと最大音量になる距離
Max Distance これを超えると聴こえなくなる距離

例えば、Min Distanceを1、Max Distanceを20に設定すると、プレイヤーが1メートル以内に近づけば最大音量になり、20メートル以上離れると音が聴こえなくなります。

6. Audio Mixerで音を一元管理

プロジェクトが大きくなると、BGM、SE、ボイスなど多種多様なサウンドが混在します。このときに便利なのがAudio Mixerです。ミキサーを使うと、各グループごとの音量調整やエフェクト適用をまとめて管理でき、開発後半でも柔軟に変更がしやすくなります。

  • BGMグループの音量を一括で下げる
  • SEグループにリバーブやエコーをかける
  • 全体のマスターボリュームを手軽に調整

Audio Mixerウィンドウで各グループを作り、AudioSource側の「Output」をそれぞれのグループに指定すれば、ミキサー経由で音声が出力されます。

7. 音のフェードイン/フェードアウトをスクリプトで実装

シーンの切り替え時やBGMを変更するときに、音が急に切り替わると不自然ですよね。そこでフェードが活躍します。以下はシンプルなフェードアウトの例です。

using UnityEngine;
using System.Collections;

public class BGMFader : MonoBehaviour
{
    public AudioSource bgmSource;
    public float fadeDuration = 2.0f;

    public void FadeOut()
    {
        StartCoroutine(FadeOutRoutine());
    }

    private IEnumerator FadeOutRoutine()
    {
        float startVolume = bgmSource.volume;

        for(float t = 0; t < fadeDuration; t += Time.deltaTime)
        {
            bgmSource.volume = Mathf.Lerp(startVolume, 0f, t / fadeDuration);
            yield return null;
        }
        bgmSource.Stop();
        bgmSource.volume = startVolume; 
    }
}
  • IEnumerator を使って少しずつvolumeを0に近づける
  • 最終的に Stop() でBGMを停止する

簡単なスクリプトですが、これだけでシームレスなサウンド演出が可能になります。

8. トラブルシューティング: よくある疑問と解決策

1. 音が鳴らない
  • AudioSourceにAudioClipが正しく割り当てられているか確認
  • MuteVolume=0になっていないか
  • AudioListenerがシーンに存在するか
2. 3Dサウンドが反映されない
  • Spatial Blendが0(2D)になっていないか
  • AudioListenerとAudioSourceの距離が極端に離れていないか
  • Rolloff Mode(音量減衰の方式)に合ったパラメータ設定を行ったか
3. Audio Mixerで音が変わらない
  • AudioSourceのOutputが正しいグループに設定されているか
  • グループの音量やエフェクト設定が反映されているか
  • Snapshotが複数ある場合、意図したSnapshotが有効になっているか

9. まとめと次のステップ

  • AudioSource + AudioListener: 一番基本となる組み合わせ。シンプルなBGMや効果音再生ならこれでOK
  • AudioClip: 多様なフォーマットに対応可能で、Inspectorから圧縮やロード方式を調整できる
  • Audio Mixer: 大規模プロジェクトで音を一元管理するときに必須級
  • フェードや3Dサウンド: スクリプトを組み合わせて臨場感をアップ

音の演出を制する者がゲームを制す、と言われるほど、サウンドはプレイヤー体験に大きく影響します。BGM、効果音、環境音をうまく組み合わせて、あなただけの魅力あふれるゲームを完成させましょう。

この記事を読んでもっと実践したいと感じたあなたへ

Unity開発を効率よく進めるためには、実践的なスキルと仲間との交流が欠かせません。
そんな方におすすめのステップが、下記の3つです。

1. 有料教材「どこでもUnity教室」でゲーム制作を短期マスター

  • 5日でシンプルなFPS完成:初心者向けに要点を押さえたカリキュラム
  • C#や最新のInputSystem、FPS実装まで網羅:つまずきやすいポイントを先回りで解説
  • 購入特典:Discord招待+サンプルプロジェクトDLで、疑問や実装例を即確認

たった5日でFPSゲームが作れる自分に変わる教材はこちら

https://zenn.dev/ryuryu_game/books/fd28de9d8e963a

2. 無料コミュニティで、疑問をすぐに解消&モチベーションUP

  • 初心者~中級者までOK:学習進度に合わせて質問や情報共有
  • 質問サポートが充実:わからないことを仲間や講師に即相談
  • 学習仲間と切磋琢磨:一緒に学ぶから続けやすい

Discordサーバー参加はこちら

https://discord.gg/5FwuKCacNy

3. 実績豊富な“ゲーム開発所RYURYU”があなたをトータルサポート

  • コナラ総販売200件超:さまざまなUnity開発の依頼を対応
  • VR/AR/AIなど最新技術にも精通:幅広いノウハウを活かして開発支援
  • ゲームクリエイター甲子園や東京ゲームショウなど出展実績多数

ご相談・お問い合わせはこちら

https://coconala.com/users/1772507

Discussion