キューバに行ってみたい

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

[Unity] OnCollisionStay2D を使って物体が接触していることを検知する

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 StayController : MonoBehaviour
{
    [SerializeField] Text _text;
    private void OnCollisionStay2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "circle")
        {
            _text.text = "on";
        }
    }
}

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

離れた時と同様に円には circle の tag を設定して Rigidbody 2D もアタッチしておきます。

もちろんそれぞれのオブジェクトに collider を設定しておく必要もあります。

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

参考

docs.unity3d.com