[Unity] 주변의 오브젝트를 감지하기

네,가능합니다 ㅣ 2024. 10. 21. 19:50

오늘은 원하는 오브젝트 주변에 있는 모든 2D 콜라이더를 감지하는 함수를 알아보겠다.

 

우선 함수 시그니처는 아래와 같다.

public static Collider2D[] OverlapCircleAll(Vector2 point, float radius, int layerMask = DefaultRaycastLayers);

여기서 point는 콜라이더를 감지할 원의 중심 좌표값이다.

그리고 radius는 point에서 설명한 원의 반지름이다.

다음으로 layerMask는 레이어필터이다. 특정 레이어를 가진 오브젝트만 감지하고 싶을때 사용한다.

만약 작성하지 않는다면 기본값으로 모든 레이어를 감지한다.

 

아래는 사용 예시이다.

 

Collider2D[] fires = Physics2D.OverlapCircleAll(player.transform.position, 5f);

foreach (Collider2D fire in fires)
{
    if (fire.CompareTag("Fire"))
    {
        // fire 오브젝트 처리
    }
}

 

fire는 내가 AvoidFire프로젝트에 사용했던 함수라 이렇게 적어봤다.

 

이 예제코드에서는 레이어필터를 설정하지 않았는데,

이처럼 한가지 오브젝트에만 항상 같은 효과를 줄 때는

레이어필터를 사용하는게 효율적인 코드가 될 것으로 보인다.