Skip to main content

サウンドを追加

ボールが何かと衝突、またはボールが失ったらサウンドを再生するようにしましょう。

ボールとパドル

新しい「BallHitSound」のスクリプトを作成し、以下の処理しましょう:

    サウンドファイルを Inspector で設定する 衝突の時 ( OnCollisionEnter2D )、ボールのタグを確認する ボールだったら、設定したサウンドを AudioSource.PlayClipAtPoint() で再生する。
    // ボールが衝突したら、サウンドを再生
    public class BallHitSound : MonoBehaviour
    {
        // 再生したいサウンド
        [SerializeField]
        private AudioClip clip;
    
        void OnCollisionEnter2D(Collision2D other) 
        {
            // タグは「Ball」?
            // ならば、サウンドを再生
            if (other.gameObject.CompareTag("Ball"))
                AudioSource.PlayClipAtPoint(clip, transform.position);
        }
    }

    このスクリプトを「パドル」の方にアタッチし、clip は 以下のようにし、実行してください

    image.png

    ボールと壁

    同じスクリプトはそのまま再利用できるので、各壁(Wall Left, Wall Right, Wall Top)にアタッチし、同じ clip にしてください

    ボールとブロック

    ブロックはシーンにはないので、プレハブを編集しましょう。プレハブフォルダーの中にある Brick プレハブをダブルクリックすると、プレハブの編集ができる!

    このプレハブにすでに作った BallHitSound スクリプトをアタッチし、今度は「BallReboundBrick」のサウンドを再生しましょう。

    image.png

    ボールが失うとき

    ボール廃止スクリプトがすでに存在するので、編集しましょう。BallDestroy スクリプトを編集し、上記と同様に、サウンドの設定は Inspector でできるようにし、そして、ボールを廃止したら、そのサウンドを再生:

    // ボールを削除し、お知らせする
    public class BallDestroy : MonoBehaviour
    {
        // BallShooterに知らせる!
        [SerializeField] 
        private BallShooter ballShooter; 
        
        // GameManagerにも知らせる!
        [SerializeField] 
        private GameManager gameManager;
        
        // 失ったとき再生するサウンド
        [SerializeField] 
        private AudioClip clip;
        
        // トリガーの中に何か入ったら:
        private void OnTriggerEnter2D(Collider2D other)
        {
            // ゲームオブジェクトを廃止(削除)する
            Destroy(other.gameObject);
    
            // サウンド再生
            AudioSource.PlayClipAtPoint(clip, transform.position);
            
            // メソッドを呼び出し、知らせる
            ballShooter.BallDestroyed();
            gameManager.BallDestroyed();
        }
    }

    Unityで BottomTrigger の BallDestroy スクリプトを編集し「BallLost」のサウンドを設定し、ゲームを実行しましょう。

    image.png

    BGM

    最後、BGMを再生しましょう。今回はBGM曲は1個のみで、設定はとても単純である。新しいゲームオブジェクト「BGM」を作成し、「AudioSource」コンポーネントを追加してください。Audio Generator は「BGM」にしたら完成。「Play On Awake」のチェックが入っていれば、自動的に再生し始まるので、スクリプトは不要。

    image.png

    2つ以降の曲、またはエフェクト(クロスフェード)などが必要な場合は、専用のスクリプト(BGMManager)を作成してくださいね~