コードの型
衝突した瞬間に自動的に呼ばれるメソッドです。
C#
void OnCollisionEnter2D(Collision2D collision)
{
// 何かにぶつかった瞬間に実行したい処理
Debug.Log("何かにぶつかりました!");
}
コードの仕組み
Unityの物理エンジンが「今、このオブジェクトが何かに当たった!」と判断したときに、自動で呼び出してくれるメソッドです。
- 自動検知: プログラマーが呼び出すのではなく、衝突したときにUnity側から話しかけてもらう仕組みです。
- collision引数:
collisionという名前の変数の中に、「誰とぶつかったか?」という情報がすべて詰まっています。
活用例(コイン落としやアクションゲーム)
壁に当たって跳ね返る音を鳴らしたり、敵に当たってダメージを受ける判定に使います。
C#
void OnCollisionEnter2D(Collision2D collision)
{
// もし「Wall」というタグがついたオブジェクトに当たったら
if (collision.gameObject.CompareTag("Wall"))
{
Debug.Log("壁にドン!");
}
}
その他(重要ポイント)
- 必須条件:
- 両方のオブジェクトに
Collider2D(当たり判定の形)が付いていること。 - 少なくともどちらか一方に
Rigidbody2Dが付いていること。 これがないと、どれだけぶつかっても反応しません。
- 両方のオブジェクトに
- OnTriggerEnter2D との使い分け:
OnCollisionEnter2D: 物理的に「ぶつかって跳ね返る」場合。OnTriggerEnter2D: 物理的な跳ね返りはせず、「エリアに入ったかどうかだけ」を検知したい場合(コインの獲得やゴール判定など)。
- メソッド名は変えない: スペルを間違えると動きません。
OnCollisionEnter2Dと、大文字・小文字を正確に書いてください。
初心者向けまとめ
OnCollisionEnter2D は、「衝突事故の通報システム」です。
- 物体がぶつかると、Unityから「〇〇さんとぶつかりましたよ!」と通報が入ります。
- この通報を受け取った時だけ、「音を鳴らす」「スコアを減らす」「自分を消す」といった処理を走らせるのが、このメソッドの役割です。

コメント