UnityUnityメモ

【Unity】マウスの左ボタンを押している間だけ音を鳴らす【初心者向け】

Unity

1. はじめに

この記事では、「マウスの左ボタンを押している間だけ音を鳴らし、離すと音を止める」仕組みを作る方法を解説します。この仕組みは、シンプルでありながら、多くの応用が利くため、Unity初心者にもおすすめの学習テーマです。

音を制御するには、UnityのAudioSourceコンポーネントを使用します。そして、C#スクリプトを使って音の再生をプログラムで制御する方法をわかりやすく説明します。記事の最後には、動かないときの対処法や応用方法も紹介していますので、ぜひ最後まで読んでみてください!

これから一緒に、楽しみながらUnityでの音の操作を学んでいきましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. 準備するもの

Unityで「マウスの左ボタンを押している間だけ音を鳴らす」仕組みを作るには、まず以下の準備を整えましょう。

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

まず、使用する音声ファイルを用意します。音声ファイルの形式はUnityが対応している**.wav.mp3**が一般的です。これらのファイルをプロジェクト内で利用できるように準備してください。

  1. 音声ファイルをダウンロードする
    フリーの音声素材サイトから必要な音声をダウンロードします。
  2. Unityにインポートする
    ダウンロードした音声ファイルを、UnityエディターのProjectウィンドウにドラッグ&ドロップしてインポートします。



3. AudioSourceを設定する

この記事では、Unityでマウスの左ボタンを押したときに音を鳴らす仕組みを作るために、AudioSourceコンポーネントを設定します。このコンポーネントは音声を再生するための基本的な仕組みを提供してくれます。


1. オブジェクトを作成する

最初に、音声を再生するためのオブジェクトを作成しましょう。

  1. ヒエラルキーウィンドウを右クリックします。
  2. Create Empty」を選択して空のGameObjectを作成します。
  3. 作成したGameObjectをわかりやすい名前に変更します(例: AudioPlayer)。

2. AudioSourceを追加する

次に、作成したGameObjectにAudioSourceコンポーネントを追加します。

  1. ヒエラルキーで作成したAudioPlayerを選択します。
  2. インスペクターウィンドウの「Add Component」ボタンをクリックします。
  3. 検索バーに「AudioSource」と入力し、表示された選択肢から「AudioSource」をクリックして追加します。

3. 音声ファイルを設定する

用意した音声ファイルをAudioSourceに設定します。

  1. **音声ファイル(例: .wavや.mp3)**をUnityプロジェクトの「Assets」フォルダーにドラッグ&ドロップしてインポートします。
  2. インスペクターウィンドウでAudioPlayerを選択します。
  3. AudioSourceコンポーネントの「AudioClip」欄に、インポートした音声ファイルをドラッグ&ドロップします。

4. AudioSourceの設定を確認する

音の再生方法を調整するため、AudioSourceコンポーネントの設定を確認しましょう。

  • Play On Awake:チェックを外します。これにより、シーン開始時に自動再生されるのを防ぎます。
  • Loop:チェックを外します(後でスクリプトで制御するため)。

これでAudioSourceの設定は完了です!次のステップでは、スクリプトを使ってマウスの左ボタンに応じて音声を再生する仕組みを作ります。



4. スクリプトを作成する

マウスの左ボタンを押している間だけ音を鳴らし、離すと止める仕組みを作るために、UnityでC#スクリプトを作成します。以下の手順で進めましょう。


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

  1. プロジェクトウィンドウで右クリックして、
    **「Create」→「C# Script」**を選択します。
  2. スクリプトの名前を「PlaySoundOnHold」と入力します。

ポイント: 名前はわかりやすく付けましょう。機能がすぐに思い出せる名前にすることで、後で管理しやすくなります。


4-2. スクリプトにコードを記述する

作成したスクリプトをダブルクリックして開きます。次に、以下のコードを記述してください。

using UnityEngine;

public class PlaySoundOnHold : MonoBehaviour
{
    AudioSource audioSource;

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

    void Update()
    {
        // マウスの左ボタンが押されている間
        if (Input.GetMouseButton(0))
        {
            // 音が再生されていなければ再生する
            if (!audioSource.isPlaying)
            {
                audioSource.Play();
            }
        }
        // マウスの左ボタンが離されたとき
        else if (audioSource.isPlaying)
        {
            // 音を停止する
            audioSource.Stop();
        }
    }
}

4-3. コードの解説

このコードでは、以下の仕組みを実現しています:

  1. AudioSourceコンポーネントの取得
    スクリプトがアタッチされているGameObjectに追加されたAudioSourceコンポーネントを取得します。これにより、コードから音声の再生や停止を制御できるようになります。
    audioSource = GetComponent<AudioSource>();
  2. マウスの左ボタンの入力検知
    Input.GetMouseButton(0)を使うことで、マウスの左ボタンが押されているかを確認しています。
    if (Input.GetMouseButton(0))
  3. 音の再生と停止
    • ボタンが押されている間に音を再生します。ただし、音がすでに再生中の場合は新しく再生しないようにしています。ボタンが離されたときには音を停止します。
    if (!audioSource.isPlaying) { audioSource.Play(); }
    else if (audioSource.isPlaying) { audioSource.Stop(); }

これでスクリプトの作成は完了です!次は、このスクリプトをゲームオブジェクトにアタッチして動作を確認しましょう。



5. スクリプトのアタッチ

作成した「PlaySoundOnHold」スクリプトをオブジェクトにアタッチする手順を説明します。以下の手順に従って進めてください。

  1. GameObjectを選択する
    まず、ヒエラルキーウィンドウでAudioSourceを追加したGameObjectをクリックして選択します。
  2. スクリプトをドラッグ&ドロップ
    プロジェクトウィンドウで作成した「PlaySoundOnHold」スクリプトを探し、それをヒエラルキーウィンドウの選択中のGameObjectにドラッグ&ドロップします。
  3. インスペクターで確認する
    選択したGameObjectのインスペクターウィンドウを確認します。「PlaySoundOnHold」というスクリプトが追加されていることを確認してください。

これでスクリプトがオブジェクトにアタッチされました。




6.実行して動作を確認する方法

スクリプトが正しく動作するかどうかを確認するため、以下の手順で動作確認を行いましょう。

  1. シーンを再生する
    Unityエディターの上部にある「▶(再生)」ボタンをクリックして、シーンを再生します。
  2. マウスの左ボタンを押す
    ゲームウィンドウにマウスカーソルを移動させ、左ボタンを押してみてください。押している間だけ音が鳴ることを確認します。
  3. ボタンを離す
    左ボタンを離してみましょう。音が停止することを確認します。

トラブルシューティング

もしスクリプトが正しく動作しない場合、以下の点を確認してください。

  • AudioSourceが正しく設定されているか
    インスペクターウィンドウでAudioSourceコンポーネントの「AudioClip」に音声ファイルが設定されていることを確認してください。
  • スクリプトのエラー
    コンソールウィンドウにエラーが表示されていないか確認してください。エラーがある場合、スクリプトのコードを見直してください。
  • GameObjectが正しく選択されているか
    スクリプトをアタッチする対象が正しいGameObjectであることを再確認しましょう。

これで、マウスの左ボタンを押している間だけ音が鳴り、離すと音が止まる仕組みを動作させることができるはずです!楽しく試してみてくださいね。



7. まとめ

今回の記事では、マウスの左ボタンを押している間だけ音を鳴らし、離すと音を止める仕組みをUnityで作成する方法を解説しました。以下のステップを通して、簡単に実装できたことを確認しましたね。


  1. 必要な準備をする
    • 音声ファイルをUnityプロジェクトにインポートし、AudioSourceを設定することで音を再生する基盤を作成しました。
  2. スクリプトで音の再生を制御する
    • Updateメソッドを使い、マウスの左ボタンが押されている間だけ音を再生し、離されたら停止する仕組みをC#スクリプトで実装しました。
  3. スクリプトをGameObjectにアタッチし動作確認
    • 作成したスクリプトをGameObjectにアタッチし、実際にシーンを再生して動作をテストしました。

この仕組みを応用すれば、マウスの他のボタンやキーボードの特定のキー、またはゲームパッドの入力に応じて音を制御することも可能です。また、異なる音声ファイルを使用して多彩な効果音を実現することもできます。

この記事を参考に、ぜひ自分のプロジェクトでこの機能を活用してみてください!Unityを使ったサウンド制御は、ゲームの没入感を高める重要な要素ですので、楽しみながら試してみましょう!



よくある質問

Q
スクリプトが動かない場合、何を確認すればいいですか?
A

スクリプトが動作しない場合、以下の点を確認してください:

  • AudioSourceが正しくアタッチされているか:スクリプトをアタッチしたオブジェクトにAudioSourceコンポーネントがあるか確認してください。
  • スクリプト内のエラー:コードにスペルミスや構文エラーがないかチェックしましょう。UnityのConsoleウィンドウにエラーメッセージが表示されている場合は、その内容を確認して修正してください。
  • AudioClipの設定:AudioSourceコンポーネントのAudioClip欄に正しい音声ファイルが設定されているか確認しましょう。
Q
音が再生されないのはなぜですか?
A

音が再生されない場合、以下をチェックしてください:

  • ミュート設定:AudioSourceコンポーネントで「Mute」がオンになっていないか確認してください。
  • 音声ファイルのインポートエラー:Unityにインポートした音声ファイルが正しく認識されているか確認しましょう。音声ファイルを選択し、Inspectorウィンドウで「Load In Background」や「Preload Audio Data」の設定を調整すると解決する場合があります。
  • AudioListenerの位置:AudioListener(通常はMain Cameraにアタッチされています)がAudioSourceから離れすぎていないか確認してください。
Q
他のマウスボタンやキーで音を制御するにはどうすればいいですか?
A

スクリプトの以下の部分を変更することで、他の入力に対応させることができます:

if (Input.GetMouseButton(0)) // マウスの左ボタン

例えば:

  • 右クリックに対応させる: Input.GetMouseButton(1) に変更します。
  • スペースキーに対応させる: Input.GetKey(KeyCode.Space) を使用します。

キーコードのリストはUnity公式ドキュメントを参考にすると便利です。また、複数の入力を組み合わせたい場合は、「||」(または演算子)を使うことで対応可能です。

例:

if (Input.GetMouseButton(0) || Input.GetKey(KeyCode.Space))
{
// 左クリックまたはスペースキーが押されている場合
audioSource.Play();
}

おすすめのアセット

「2000 Game Sound FX」は、ゲーム制作に役立つ2,000種類以上の効果音を収録した音素材集です。ジャンルを問わず、アクション、RPG、パズルなど、さまざまなゲームシーンに対応できる音が揃っています。UIの効果音や環境音、アクション音など、初心者からプロまで幅広く利用できる品質です。手軽に高品質なサウンドを追加したい方に最適で、Unityのバージョン2019.4.31以降に対応しています。