サウンドを追加
ボールが何かと衝突、またはボールが失ったらサウンドを再生するようにしましょう。
ボールとパドル
新しい「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 は 以下のようにし、実行してください

ボールと壁
同じスクリプトはそのまま再利用できるので、各壁(Wall Left, Wall Right, Wall Top)にアタッチし、同じ clip にしてください
ボールとブロック
ブロックはシーンにはないので、プレハブを編集しましょう。プレハブフォルダーの中にある Brick プレハブをダブルクリックすると、プレハブの編集ができる!
このプレハブにすでに作った BallHitSound スクリプトをアタッチし、今度は「BallReboundBrick」のサウンドを再生しましょう。

ボールが失うとき
ボール廃止スクリプトがすでに存在するので、編集しましょう。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」のサウンドを設定し、ゲームを実行しましょう。

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

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