I'm FanJae.

[20260527] Unity 정리 ( Overlap 계열, Check 계열 ) 본문

Unity/Unity 초격차캠프

[20260527] Unity 정리 ( Overlap 계열, Check 계열 )

FanJae 2026. 5. 27. 17:21

1. Raycast와 범위 검사의 차이

- Raycast는 특정 위치에서 특정 방향으로 광선을 쏴서 검사한다.

- 반면 Overlap 계열과 Check 계열은 특정 범위 안에 Collider가 있는지 검사하는 방식으로 사용한다.


2. Overlap 계열

- Overlap 계열은 특정 범위 안에 들어온 Collider를 가져온다.

- 즉, 범위 안에 어떤 대상이 있는지 확인할 때 사용한다.

 

① 대표 메서드

Physics.OverlapSphere()
Physics.OverlapBox()
Physics.OverlapCapsule()

② 사용 예시

Collider[] hits = Physics.OverlapSphere(transform.position,detectRadius,targetLayer);

foreach (Collider hit in hits)
{
    Debug.Log(hit.name);
}

private void OnDrawGizmos() // // Scene 뷰를 그릴때 자동 호출
{
    Gizmos.DrawWireSphere(transform.position, radius);
}

- 해당 옵션을 확인하기 위해서는 Scene 뷰의 오른쪽 윗쪽에 있는, Gizmos 를 활성화 시켜야한다.

- 이 옵션은 Scene 뷰를 그릴때 자동으로 호출해준다.

- 현재 그려지는 것을 통해, 3개 모두 OverlapSphere 영역 안에 들어왔음을 확인할 수 있다.

③ 사용 예시

- 범위 공격
- 주변 적 감지
- 아이템 자동 획득
- 폭발 범위 판정

3. Check 계열

- Check 계열은 특정 범위 안에 Collider가 있는지만 확인한다.

- 즉, 범위 안에 대상이 존재하는가?를 true / false 로 판단할 때 사용한다.

 

① 대표 메서드

Physics.CheckSphrer()
Physics.CheckBox()
Physics.CheckCapsule()

 

② 사용 예시

bool isGrounded = Physics.CheckSphere(groundCheck,position, checkRadius, groundLayer);
if(isGround)
{
		Jump();
}

 

③ 활용 예시

- 바닥 체크
- 벽 감지
- 공격 가능 범위 확인
- 특정 구역 진입 여부 확인

4. Overlap 계열과 Check 계열의 차이

- Overlap 계열은 누가 있는지 알아야 할 때 사용할 수 있고, Check 계열은 있는지 없는지만 알면 될 때 사용할 수 있다.


5. 주의점

- Overlap 계열은 결과 배열을 반환하므로, 자주 호출하면 GC 부담이 생길 수 있다.

- 매 프레임에서 반복해서 사용해야 하는 경우 OverlapSphereNonAlloc 같은 NonAlloc 계열을 고려해 보는 것도 가능하다.

- Check 계열은 목록이 필요 없을 때(정확히는 누가 있는지는 알 필요가 없을 때) 더 단순하게 사용할 수 있다.

- LayerMask를 같이 사용하면 검사 대상을 줄일 수 있다.


6. 정리

- Overlap 계열은 범위 안의 Collider 목록을 가져온다.

- Check 계열은 범위 안에 Collider가 존재하는지만 확인한다.

- 대상 목록이 필요하면 Overlap, 존재 여부만 필요하면 Check를 사용한다.


 

Comments