【Unity】AudioSourceコンポーネントとは?音を発生させる役割

AudioSourceとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「UnityのAudioSourceコンポーネントが知りたい!」

「AudioSourceの使い方が分からない。」

というお悩みの方に向けた内容となっています。

Unityで音を流す際に必要になるのが、AudioSourceコンポーネントです。

このAudioSourceコンポーネントは、紐づけた音声データを流す役割があります。

また、ただ音声を流すだけではなく、音量やピッチを変えたり、オーディオフィルターを使うことで、音を加工することができるようになります。

そこで、このページでは、Unityで音を流す際に必要となってくるAudioSourceコンポーネントについて、特徴や使い方、また設定項目までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

AudioSourceとは?音を発生させるためのコンポーネント

AudioSourceコンポーネントは、Unity上で音を流すためのコンポーネントです。

このAudioSourceコンポーネントは、ラジカセと同じような役割を持っています。

ラジカセはそのままだと音が出ませんが、カセットCDなど音が入ったものをセットすることで音を流すことができます。

そして、人間はそのラジカセから流れている音をで受け取ることで、音を聞くことができます。

Unityでは、このラジカセの役割をAudioSourceコンポーネントが担っていて、カセットにあたるAudioClipという音声データをこのAudioSourceコンポーネントにセットしてあげることで、音が流せるようになります。

また、ゲーム内でこの音を拾う耳の役割をしているのがAudioListenerコンポーネントで、このAudioListenerで聞いた音が実際にゲームで流れてきます。

そのため、Unityで音を出す仕組みとして、

  • AudioSource ⇒ ラジカセ
  • AudioClip ⇒ カセットやCD
  • AudioListener ⇒ 耳

という3つが使われており、その中でAudioSourceコンポーネントはラジカセと同じで、音声データを流す役割を持っています。

AudioSourceコンポーネントの使い方

ここからは、AudioSourceコンポーネントの使い方についてまとめていきます。

コンポーネントをアタッチする

AudioSourceコンポーネントを使う場合は、音を流したいオブジェクトを選択して、インスペクターウィンドウの「Add Component」をクリックします。

一覧から「Audio」を選択します。

さらに、その中にある「AudioSource」を選択することで、AudioSourceコンポーネントがアタッチされ使えるようになります。

AudioSourceコンポーネントの設定項目

AudioSourceコンポーネントには、様々な設定があります。

それぞれの項目を簡単に紹介していきます。

Audio Resource:再生する音源を紐づける

Audio Resourceは、このAudioSourceコンポーネントで流す音声データを紐づける項目です。

簡単にいえば、どのカセットの音声を流すかを決める設定です。

Unityに音声データをインポートすると、Audio Clipというデータ形式(clip)で保存されるので、プロジェクトウィンドウからこのAudio Clipをドラッグ&ドロップするか、一覧から設定して紐づけることができます。

Output:Audio Mixerを通して出力できる

Outputは、Audio Mixerを通して音声を出力することができる項目です。

AudioSourceからの音声は、デフォルトではAudioListenerによってゲーム内から出力されますが、これを設定することでAudio Mixerを通して出力することができます。

Audio Mixerとは、他の音源とミックスしたり、エフェクトなどをかけることができる機能で、使用する場合は「Window」「Audio」の中にある「Audio Mixer」を選択して、

+ボタンから新しくMixerを作って設定することで、このAudio Mixerを介してその音を出力することができます。

Mute:音声をミュートにする

Muteにチェックを入れると音声がミュートされて、音が流れているけど音量が0の状態になります。

BGMなどの音源で、ゲーム内からボタンなどを押してミュートさせたい場合に活用できます。

Bypass Effects:Audio Sourceへのフィルター効果のオンオフ

Bypass Effectsは、Audio Sourceの音にエフェクト効果を付けられるオーディオフィルターをオンオフすることができる項目です。

オーディオフィルターとは、音の周波数帯域によって変化させたり、エコーなどのオーディオ効果を付けられる機能で、以下のようなものがあります。

オーディオフィルター概要
Audio Chorus Filter少し変化した音を重ねてコーラス効果を与える
Audio Distortion Filter音を歪ませる効果を与える
Audio Echo Filter音声を遅延して繰り返してエコー効果を与える
Audio High Pass Filter低い周波数の音域をカットする効果を与える
Audio Low Pass Filter高い周波数の音域をカットする効果を与える
Audio Reverb Filter音声を響かせてリバーブ効果を与える

このオーディオフィルターは、Audio SourceもしくはAudio Listenerの紐づいているオブジェクトに使うことができ、Bypass EffectsAudio Sourceに紐づいているオーディオフィルターの効果をオンにするかオフにするかを決めています。

なお、オーディオフィルターを使う場合は、「Add Component」から追加することでオーディオ効果を付けることができます。

Bypass Listener Effects:Audio Listenerへのフィルター効果のオンオフ

Bypass Listener Effectsは、Audio Listenerが拾う音にエフェクト効果を付けられるオーディオフィルターをオンオフすることができる項目です。

先ほどのBypass Effectsは、Audio Source側のオーディオフィルターをかけるかどうかを決めていましたが、このBypass Listener EffectsAudio Listener側のフィルター効果を使うかどうかを決めています。

Bypass Reverb Zones:Reverb Zonesのオンオフを決める

Bypass Reverb Zonesは、Reverb Zonesによるリバーブの効果のオンオフを決めている項目です。

Reverb Zonesとは、特定の場所に設定することでその座標からの距離に合わせて、リバーブの強弱を決めることができる機能で、洞窟などでリバーブを徐々にかけていくという場合に使えます。

Reverb Zonesを使う際は、ヒエラルキーウィンドウから「Audio Reverb Zone」を追加するか、空のオブジェクトなどに「Add Component」から追加することで設定できます。

Play On Awake:シーン起動と同時に音源を流すかどうか

Play On Awakeは、シーンが起動すると同時にAudio Sourceに紐づいているAudio Clipの音声データを自動で再生する項目です。

このPlay On Awakeは、デフォルトでチェックが入っていてオンになっていますが、オフにした場合は自動で再生されなくなるので、PlayメソッドもしくはPlayOneShotメソッドで音声を流す処理をする必要があります。

Loop:音源をループして流すかどうか

Loopは、Audio Sourceの音源が再生された場合に、ループして何度も音源を繰り返して再生させるかどうかを決めている項目です。

Loopをオンにした場合は、音声が止まらずに流れ続けることになるため、BGMとして使用する場合が多いです。

また、音声を止める場合はStopメソッドを使うか、オブジェクトをオフにするなどの処理が必要になります。

Priority:音源の優先度を決める設定

Priorityは、音源が複数再生された場合に、どの音源を優先して流すかを決めている設定です。

複数の音源が再生されると、かき消されてしまうことがあるため、その優先度を決めています。

デフォルトが128となっていて、数値が小さいほど優先順位が高く、反対に大きくなると優先順位が低くなります。

Volume:音源の大きさを決める値

Volumeは、音源の大きさを決めている値です。

デフォルトの1が最大で、小さくすればその分音も小さくなります。

Pitch:音源の速度を変化させる値

Pitchは、音源を再生する速度を決めている値です。

デフォルトが「1」で音源と同じ速度になっていて、数字をあげるとその分早くなり音程も上がり、反対に数字を下げると遅くなり音程も下がります。

また、Pitchの値を0未満にすると、音源が逆再生されます。

Stereo Pan:左右のどこから音が聞こえるかを決める

Stereo Panは、音声の左右の音量比率を決めて、どの位置から音が聞こえるかを決める設定です。

デフォルトの「0」は、スピーカーの左右から同じ音量で聞こえるようになり、Left側の「-1」にすると、スピーカーの左側からしか音が聞こえず、反対にRight側の「1」にすると、スピーカーの右側からしか音が聞こえなくなります。

例えば、スクリプトを使って「1」から「-1」に徐々に数値を変えることで、右から左に向かって音を流すことができます。

Spatial Blend:音源を立体的にするかどうかを決める

Spatial Blendは、音源を3Dの立体的に表現するかどうかを決める項目です。

このSpatial Blendは、この後紹介する3D Sound Settingsをどの程度影響するかを決めていて、2Dの「0」だと影響しませんが、数値を3Dに近づけていけばいくほど、3D Sound Settingsの影響を高めてより立体的な音になっていきます。

Reverb Zone Mix:Reverb Zoneの影響をどのくらいにするか

Reverb Zone Mixは、Reverb Zonesによるリバーブの効果の影響をどのくらい受けるかを決めている項目です。

デフォルトが「1」になっていて、数値を下げるとリバーブ効果が低減して、数値を上げるとリバーブ効果が増加します。

3D Sound Settings:Spatial Blendに比例して適用される設定

3D Sound Settingsは、音を立体的に表現するための数値設定で、Spatial Blendの値に比例して音を変化させることができます。

この3D Sound Settingsを使うことで、音源からの距離が離れると音量が下がったり(減衰)、ドップラー効果の影響を与えたりすることができます。

3D Sound Settingsで設定できる項目は、以下の5つがあります。

設定項目概要
Doppler Levelドップラー効果の度合いを設定する項目。
Spread音の広がりの角度を設定する項目。
Volume Rolloff音源からの距離に応じてどの程度減衰するかを決める項目。
「Logarithmic Rolloff」「Linear Rolloff」「Custom Rolloff」から選択
Min Distance減衰が始まるまでの音源からの最小距離。
この距離までは音量の減衰が行われず、この値より離れると音量の減衰が始まる。
Max Distance音量の減衰が行われる音源からの最大距離。
この距離より離れるともう減衰されず、音量が維持される。

音を再生するのはPlayメソッド

AudioSourceコンポーネントをアタッチして、Audio Clipの音声データを紐づけた後に、「Play On Awake」ではなくタイミングに合わせて音を流したい場合は、Playメソッドが使われます。

このPlayメソッドは、AudioSourceコンポーネントで定義されているメソッドで、そのAudioSourceに紐づいているAudio Clipを再生するというラジカセの再生ボタンの役割を持っています。

例えば、マウスをクリックしたら音声を流すという処理を作りたい場合は、

using UnityEngine;

public class SoundManager : MonoBehaviour
{
    AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();  // AudioSourceコンポーネントを取得
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))  // マウスをクリックした場合
        {
            audioSource.Play(); // 音声を流す
        }
    }
}

上記のように、先に9行目でGetComponentメソッドAudioSourceを取得しておいて、if文の中の16行目でその中にあるPlayメソッドで音声を流す処理を書いてあげることで、マウスをクリックする度に音を流すことができます。

なお、Playメソッドで音声を流す場合、音を重複することができないので、前の音が鳴っている最中に再度音を流そうとすると、前の音が止まり最初から音声が流れることになります。

音を重複させて流したい場合は、Playメソッドの代わりにPlayOneShotメソッドを使います。

Unityで音を流す方法については、以下のページでより詳しくまとめていますので、参考にしてみてください。

まとめ

このページでは、Unityで音を流す際に使うAudioSourceコンポーネントについて、どんな役割を持っているのか、また使い方や設定項目についてまとめていきましたが、いかがでしたでしょうか?

AudioSourceコンポーネントは、ラジカセと同じような役割で、Unity内で音声を流す役割を持っています。

このAudioSourceコンポーネントに、音声データであるAudio Clipを紐づけてあげることで、音を流せるようになります。

また、AudioSourceコンポーネントには様々な設定項目があるので、好みの調整を行うことができるようになります。

最後までお読みいただきまして、ありがとうございました!

コメント