画像が重なっているか確認したい事ってありますよね。
でもって、その時のために、
わざわざ重なってるかどうか知りたいだけなのにRigidbodyなんか使いたくない
時ってありますよね。
調べても、
2D collision detection without rigid body? - Unity Answers
コライダーはリジッドボデイにくっつけて、トリガーでとるっつっでんだろ。と答えられており、
諦めかけおりました。
ところが、とうとうUnity5.6で、
Collider2D.OverlapCollider
に出会いました。
Unity - Scripting API: Collider2D.OverlapCollider
ということで、
準備
- 重なりを確認したいオブジェクトにスプライトとCollide2D系を突っ込んでおく
- 適当にアタッチするスクリプトを作成してアタッチ
- 格納バッファ(Collider2D)を準備
- Collider2DからOverlapColliderメソッドを実行
上手くいけばこんな感じでチェックできます。
参考にコード私はこんなコードで確認しました。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class OverlapCheck : MonoBehaviour { Collider2D col2D; Collider2D[] result; void Awake() { col2D = GetComponent<Collider2D>(); result = new Collider2D[10]; } void OnEnable() { OverlapCount(); } // Use this for initialization void Start() { } void OverlapCount() { int count = col2D.OverlapCollider(new ContactFilter2D(), result); Debug.Log("Overlap=" + count); foreach (var r in result) { if (r != null) Debug.Log(r.name); } } }
以上、なるべく最新版で開発できるということはいいこと、
とくに、2Dは充実してきているので、なるべくUnityはアップデートしていきたいといことでした。