LoginSignup
8
6

More than 5 years have passed since last update.

Unity2d SpriteのColliderが指定したワールド座標に重なってるか判定する

Posted at

単純にSpriteのCollider2dとの接触を検知する

SpriteにCollider2dを設定し、そのCollider2dが指定したワールド座標と接触しているかの判定を行うための方法です。

ワールド座標の取得についてはこちらの記事を参考にしてください。

判定したいSpriteにCollider2dが設定されているとして、以下の処理を記述します。

Vector2 position = /* 適当な値 */;
Collider2d collider = Physics2D.OverlapPoint(position)

もし指定した座標にCollider2dがあればそのオブジェクトが取り出され、
何も無ければnullが返ります。


重なりあったSprite全てのCollider2dを検知する。

上述のやり方では1つ問題があります。
それは、Spriteが重なり合っている時に、全てを検知することが出来ません。
(重なりの中で1番上に配置されているSpriteのみ適用されてしまいます)

重なったSprite全て等しく接触を検知する場合は、OverlapPointではなく、OverlapPointAllを利用します。
ちなみに、OverlapPointAllは戻り値が配列になっているのでご注意ください。

Vector2 position = /* 適当な値 */;
Collider2d[] colliderArr = Physics2D.OverlapPointAll(position)

// 値があれば、取り出す
if (colliderArr.Length > 0) { 
    foreach (Collider2D collider in colliderArr) {
        /* 処理 */
    }

}
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6