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)を作成してくださいね~