[Unity] OnCollisionEnter2D を使って物体の衝突を検知させる
かなり基本的な内容ですが、タイトル通り今回は OnCollisionEnter2D を使って物体の衝突を検知してみたいと思います。
最終的に目指すのはこんな感じです。
球が下のブロックに衝突すると、色が白から赤に変化します。
実装方法
球に Rigidbody 2D と Circle Collider 2D のコンポーネントを追加して重力と当たり判定がされるようにします。
次にブロックに Box Collider 2D のコンポーネントを追加して当たり判定がされるようにし、"block" の Tag を追加します。
あとは以下のような script を準備して、球の GameObject にアタッチします。
これで実装自体は完了です。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TriggerController : MonoBehaviour { public void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "block") { gameObject.GetComponent<Renderer>().material.color = Color.red; } } }
軽く説明すると、OnCollisionEnter2D メソッドは物体が衝突したのを検知して発火するイベントトリガーです。
引数に渡される collision は衝突した object が渡ってきます。
そして、その object の tag を取得して "block" だった場合に球の色を変化させています。
簡単な内容ですが以上です。