
6-1ボールが跳ね返るときに効果音を鳴らす【Unityゲーム開発の基礎】作って学ぶブロック崩し
ブロック崩しを作りながらUnityを学んでいこう!
フェーズ1で「ブロック崩しの骨格」を作り
フェーズ2で「見た目をかっこよく」して
フェーズ3で「タイトル画面やゲームオーバーなどの画面」を作って
フェーズ4で「アニメーション」させて
フェーズ5で「ステージを増やす」ことができました。
フェーズ6の目標は「音を鳴らす」です。
今回はボールが跳ね返った時に効果音を鳴らすようにします。
音源素材を入手する
自身で音源まで作るのは大変なので、無料で利用できる音源を使わせてもらうことにします。
著作権フリーで利用できる音源を配布しているサイトが結構あるので、利用規約などを確認して使えそうなファイルをダウンロードします。
入手したファイルはプロジェクトのassetsフォルダの下に「sounds」フォルダを作成してそこにコピーしておきます。
ボールに AudioSource コンポーネントを追加
音を鳴らすには オーディオを再生する AudioSource クラスと、
オーディオデータを管理する AudioClip クラスを使います。
AudioClip に音源データを読み込み、AudioSource から指定の AudioClip を再生するという流れになります。
まずはボールオブジェクトに AudioSource コンポーネントを追加します。

AudioSource コンポーネントに音源とするAudioClipを設定する項目がありますが、指定するとすぐ音が鳴り始めてしまうのでココではまだ指定しません。
ボール用のスクリプトに音源を紐づけ
AudioClipはポール用のスクリプトに持たせます。
public class BallBehaviour : MonoBehaviour
{
public AudioClip audioClip; //←ココを追加
:
:
}
BallBehaviour にメンバ変数を作成したら、Inspectorから音源ファイルを紐づけます。

ボール用のスクリプトで音を鳴らす
ボール用のスクリプト BallBehaviour を以下のように変更しました。
public class BallBehaviour : MonoBehaviour
{
:
:
private AudioSource audioSource; // ←ココを追加
public void Startup(MainManagerBehaviour manager)
{
this.mainManager = manager;
this.rigidBody2D = this.GetComponent<Rigidbody2D>();
this.audioSource = this.GetComponent<AudioSource>(); // ←ココを追加
:
:
}
:
:
void OnCollisionEnter2D(Collision2D collision)
{
:
:
this.audioSource.PlayOneShot(audioClip); // ←ココを追加
}
}
ゲーム開始時に呼び出される Startup メソッドで、オブジェクトに紐づけられた AudioSource コンポーネントを取得しておきます。
そして、ボールが何かに衝突した時に呼び出される OnCollisionEnter2Dメソッドで音を鳴らします。効果音のような短い音を鳴らす場合は AudioSourceのPlayOneShotを使うのが手軽でよさそうです。
つづく
次回:6-2敵が壊れる時効果音を鳴らす (予定)