キューバに行ってみたい

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

[Unity] OnCollisionExit2D を使って物体が衝突から離れたことを検知する

Version unity 2020.3.27.f1 で動作検証を行っています。

以前物体の衝突の検知方法を紹介しました。

blog.bestinarix.studio

今回は物体が離れたこと検知する方法を紹介します。

では早速実装方法です。

実装方法

サンプルとして円が四角形から離れるとテキストが off から on に変わるような script を書きます。

物体の衝突は OnCollisionEnter2D メソッドで検知できましたが、離れたことは OnCollisionExit2D メソッドで検知することができます。
この他にも OnCollisionStay2D メソッドというのも存在し物体が接触していることを検知します。
これはまた別の機会で紹介したいと思います。

以下のような script を準備します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ExitController : MonoBehaviour
{
    [SerializeField] Text _text;
    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "circle")
        {
            _text.text = "on";
        }
    }
}

この script を四角形にアタッチして、_text には off のテキストをアタッチしておきます。

円には circle の tag を設定して Rigidbody 2D もアタッチしておきます。
これで円が重力によって落ちるようになります。

設定は以上でこれで動かしてみると以下のように期待通りの挙動が実現できます。

参考

docs.unity3d.com