UnityUnityメモ

Unityで簡単!接触時に効果音を鳴らすスクリプトの作り方

Unity

はじめに

こんにちは!Unityでゲームを作るとき、「どうやってゲームをもっと楽しく、臨場感を出すか?」と悩むことってありますよね。その中でも、キャラクターが敵や障害物にぶつかったときに効果音を鳴らす仕組みは、ゲームの雰囲気をグッと引き立ててくれる重要なポイントです。

「プログラミング初心者だけど大丈夫かな?」と思っている方もご安心ください!今回ご紹介する方法は、とても簡単で、しかもUnityの基本的な機能を使うだけで実現できます。



準備

まずは、効果音を鳴らすために必要なファイルとUnityプロジェクトの環境を整えましょう。以下のステップに従えば、初心者でも簡単に準備ができます!


1. 効果音ファイルを用意する

ゲームに使いたい効果音を準備します。インターネットから無料の効果音をダウンロードするか、オリジナルの音声を録音して使うのもOKです。ファイル形式は .wav または .mp3 が推奨されます。


2. 効果音ファイルをUnityにインポートする

Unityエディターに効果音ファイルを追加します。

  1. プロジェクト(Project)ウィンドウを開く
    Unityのウィンドウ下部にある Projectウィンドウ を確認しましょう。
  2. 効果音ファイルをドラッグ&ドロップ
    準備した効果音ファイルを Assetsフォルダ にドラッグ&ドロップします。これでファイルがUnityプロジェクトにインポートされます。
  3. ファイルを確認する
    インポートしたファイルが Assetsフォルダ に表示されていることを確認してください。

3. ゲームオブジェクトを準備する

効果音を鳴らす対象となるキャラクターや障害物のゲームオブジェクトを作成・配置します。

  1. ゲームオブジェクトを作成
    • ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
    • 「3D Object」→「Cube」などを選んで、シーン内にオブジェクトを作成します。
  2. オブジェクトをカスタマイズ
    • 作成したオブジェクトの名前を分かりやすく「Player」や「Obstacle」に変更します。
    • 必要であれば、オブジェクトのサイズや位置を調整してください。



スクリプトの作成

効果音を鳴らすためのC#スクリプトを作成しましょう!Unity初心者でも安心してできるよう、ステップバイステップで解説します。


1. 新しいスクリプトを作成する

  1. プロジェクト(Project)ウィンドウを開く
    Unityエディターの下部にある Projectウィンドウ を確認してください。
  2. スクリプトを作成
    • Projectウィンドウ内で右クリックし、「Create」→「C# Script」を選択します。
    • 作成したスクリプトに PlaySoundOnCollision と名前を付けます。
  3. スクリプトを開く
    ダブルクリックして、スクリプトを開きます。Unityのデフォルトでは、スクリプトはVisual StudioやRiderなどのコードエディタで開きます。

2. スクリプトの内容を記述する

以下のコードをコピーして、先ほど作成したスクリプトに貼り付けてください。

using UnityEngine;

public class PlaySoundOnCollision : MonoBehaviour
{
    public AudioClip collisionSound; // 接触時に再生する効果音
    private AudioSource audioSource; // AudioSourceコンポーネント

    void Start()
    {
        // AudioSourceコンポーネントを追加して取得
        audioSource = gameObject.AddComponent<AudioSource>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // 効果音を再生
        audioSource.PlayOneShot(collisionSound);
    }
}

3. コードのポイントを解説

  • public AudioClip collisionSound;
    接触時に鳴らす効果音をインスペクターウィンドウで設定できるようにします。
  • audioSource = gameObject.AddComponent<AudioSource>();
    ゲームオブジェクトに自動的にAudioSourceコンポーネントを追加します。これが音を再生する役割を果たします。
  • audioSource.PlayOneShot(collisionSound);
    接触時に指定した効果音を再生します。一回だけ再生する場合に便利なメソッドです。

4. スクリプトを保存する

コードを書き終えたら、エディタで Ctrl + S(またはCmd + S) を押して保存してください。

これでスクリプトの作成が完了しました!次は、このスクリプトをゲームオブジェクトにアタッチして、効果音を設定していきましょう。



スクリプトの設定

次は、作成したスクリプトをゲームオブジェクトにアタッチして、効果音を設定します。Unity初心者でも簡単にできるよう、順を追って解説します!


1. スクリプトをゲームオブジェクトにアタッチする

  1. ゲームオブジェクトを選択
    ヒエラルキー(Hierarchy)ウィンドウで、効果音を鳴らしたい対象のゲームオブジェクト(例: PlayerObstacle)をクリックします。
  2. スクリプトをアタッチ
    • プロジェクト(Project)ウィンドウで作成した PlaySoundOnCollision スクリプトを確認します。
    • そのスクリプトをヒエラルキーウィンドウ内の対象ゲームオブジェクトにドラッグ&ドロップします。
  3. インスペクターで確認
    • ゲームオブジェクトを選択した状態でインスペクター(Inspector)ウィンドウを開きます。
    • PlaySoundOnCollision スクリプトがコンポーネントとして追加されていることを確認してください。

2. 効果音を設定する

  1. AudioClipフィールドを設定
    • インスペクターウィンドウの PlaySoundOnCollision スクリプトの中にある Collision Sound フィールドを探します。
    • プロジェクトウィンドウからインポートした効果音ファイルを、このフィールドにドラッグ&ドロップします。
  2. 設定の確認
    • Collision Sound フィールドに効果音ファイルが正しく割り当てられていることを確認します。



実行して確認

いよいよ設定が完了したスクリプトが正しく動作するかを確認しましょう!以下の手順で動作テストを行います。


1. プレイモードを開始する

  1. Unityエディターのプレイボタンをクリック
    Unityの上部にある ▶(再生ボタン) をクリックします。これでプレイモードが開始されます。
  2. シーン内で動作を確認
    ゲームの中で、キャラクターやオブジェクトが敵や障害物に接触するシーンを再現します。



よくある質問(Q&A)

ここでは、この記事の内容に関連してよく寄せられる質問をまとめました。初心者の方でも問題を解決できるよう、わかりやすく答えています!


Q
効果音が鳴らないのですが、どうすればいいですか?
A

以下のポイントを確認してみてください:

  • スクリプトが対象のゲームオブジェクトに正しくアタッチされていますか?
  • インスペクターの Collision Sound フィールドに効果音ファイルが設定されていますか?
  • 接触するオブジェクトに Collider コンポーネントが追加されていますか?
  • Rigidbodyが必要なオブジェクトに追加されていますか?
  • Audio Sourceのボリュームがゼロになっていないか確認してください。
Q
特定のオブジェクトと接触したときだけ音を鳴らしたいです。
A

スクリプトを以下のように変更して、特定のタグを持つオブジェクトとの接触を判定できます。

void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy") // "Enemy"というタグを持つオブジェクトと接触した場合
{
audioSource.PlayOneShot(collisionSound);
}
}

対象のオブジェクトに「Enemy」などのタグを設定することを忘れないでください。

Q
音が大きすぎたり小さすぎたりします。調整できますか?
A

はい、できます! audioSource.PlayOneShot の第2引数で音量を指定できます。


おすすめのアセット

「2000 Game Sound FX」は、ゲーム開発に必要な効果音を2000種類も収録したアセットです。このアセットには、爆発音、銃声、魔法の効果音、ボタンのクリック音など、様々なジャンルの音が含まれています。音質は高く、どんなゲームにも合うように設計されています。