キューバに行ってみたい

ゲーム開発とかWeb開発とか

[Unity] OnCollisionEnter2D を使って物体の衝突を検知させる

かなり基本的な内容ですが、タイトル通り今回は OnCollisionEnter2D を使って物体の衝突を検知してみたいと思います。

docs.unity3d.com

最終的に目指すのはこんな感じです。

球が下のブロックに衝突すると、色が白から赤に変化します。

実装方法

球に 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" だった場合に球の色を変化させています。

簡単な内容ですが以上です。