공부 기록/유니티 Unity

[Unity/TIL] 특정 위치에 다른 오브젝트가 있는지 감지하는 방법

톰마토 2025. 2. 26. 23:47
반응형

보스 몬스터가 일정 확률로 특수 스킬을 사용하면 은신을 하고서 랜덤한 위치에 등장하도록 만들기로 했다. 맵 제작을 맡으신 팀원분께서 작성하신 맵 오브젝트를 랜덤 배치하는 코드를 보고 좋은 방법을 배웠다.

 

맵 구역 내 랜덤 포지션 값을 받아 다른 오브젝트(맵, 장애물 등)와 겹치지 않는지 확인하고서 자리를 확정한다.

// 랜덤 위치로 이동
Vector3 randomPos = GetRandomPos();
while (Physics2D.OverlapCircle(randomPos, 0.5f, obstacleLayer) != null)
{
    randomPos = GetRandomPos();
}
transform.position = randomPos;

 

Physics2D.OverlapCircle(pos, radius, layerMask)는 특정 위치에 충돌체가 있는지 감지하는 함수이다. 감지하면 Collision2D를, 감지하지 못하면 null을 반환한다.

 

OverapCircle 외에도 콜리전 종류마다 제공하고, All은 특정 위치에 있는 모든 충돌체(Collider2D)를 배열로 반환한다.

반응형