[Unity] Overlap~

Learning 

When: 1학년 7월 10일

 

How:

수업시간에 배운 OverlapBox와 BoxCast의 차이점을 생각해보고 있었는데 BoxCast에 대해선 어느 정도 알지만 OverlapBox에 대해선 잘 알지 못하는 것 같아서 공부를 하게 되었습니다.

 

Understanding:

Overlap~은 ~Cast와 비슷하게 콜라이더를 감지하여 그 콜라이더를 반환하는 메서드이고, Physics2D 클래스에 static으로 선언되어 있는 메서드이기 때문에 Physics2D.OverlapBox(); 이런 방식으로 사용하실 수 있습니다. OverlapPoint, Box, Circle, Capsule, Area가 있고, 그것들에 대해 설명해 보겠습니다. 참고로 Overlap~ 메서드는 콜라이더가 없으면 null을 반환합니다.

메서드명 용도 예시
OverlapPoint 특정 좌표에 콜라이더가 있는지 확인하여 감지된 콜라이더를 하나 반환합니다. 마우스 포인터의 위치 등을 사용할 수 있습니다. Physics2D.OverlapPoint(new Vector2(1,1));
OverlapBox 특정한 위치에 있는 사각형 모양의 범위 안에 콜라이더가 있는지 확인하여 감지된 콜라이더를 하나 반환합니다. 공격 범위 등에 사용할 수 있습니다. Physics2D.OverlapBox(new Vector2(1,1), new Vector2(2,4), 0f); // x = 1, y = 1 좌표를 중앙으로 하는 가로가 2, 세로가 4인 사각형 모양을 0도 만큼 돌린 범위
OverlapCircle 특정한 위치에 있는 원 모양의 범위 안에 콜라이더가 있는지 확인하여 감지된 콜라이더를 하나 반환합니다. 근처의 오브젝트를 감지하는 데에 사용할 수 있습니다. Physics2D.OverlapCircle(new Vector2(1,1), 2.0f);
// x = 1, y = 1 좌표를 중앙으로 하는 반지름이 2인 원을 범위로 합니다.
OverlapCapsule 특정한 위치에 있는 캡슐 모양의 범위 안에 콜라이더가 있는지 확인하여 감지된 콜라이더를 하나 반환합니다. 길쭉한 원 모양으로 플레이어 주위의 콜라이더를 감지하는 데에 사용할 수 있습니다. Physics2D.OverlapCapsule(new Vector2(1,1), new Vector2(2, 4), direction, 90f); // 1,1을 중앙으로 하는 위치에 가로 2, 세로 4인 캡슐을 생성하고, CapsuleDirection2D 형식의 값(CapsuleDirection2D.Horizontal{가로}CapsuleDirection2D.Vertical{세로})으로 방향을 정한 후, 90도만큼 돌린 캡슐 모양을 범위로 합니다.
OverlapArea 왼쪽 아래 꼭짓점 좌표, 오른쪽 위 꼭짓점 좌표를 이용해 특정한 위치에 있는 사각형 모양의 범위 안에 콜라이더가 있는지 확인하여 감지된 콜라이더를 하나 반환합니다. 회전이 필요 없는 단순한 모양의 사각형 범위가 필요할 때 사용합니다. Physics2D.OverlapArea(new Vector2(0,0), new Vector2(10,10)); // 0,0 좌표를 왼쪽 아래의 꼭짓점으로 하고 10, 10 좌표를 오른쪽 위 좌표로 하는 10 * 10 사이즈의 사각형을 범위로 합니다.

Overlap~는 Cast처럼 방향을 정해서 쏘는 것이 아닌, 찍어내는 방식으로 콜라이더를 감지하기 때문에 한 번에 여러 콜라이더가 찍힐 경우에는 무엇이 먼저 감지될지 알 수 없습니다. 그렇기 때문에 Layer를 정하거나 OverlapBoxAll(); 메서드처럼 한번에 여러 콜라이더를 배열로 반환하는 방식을 사용할 수도 있습니다.

 

Result: Overlap~은 ~Cast와 다르게 도장을 찍듯 한번에 범위를 생성하여 그 범위의 콜라이더를 감지하는 방식입니다. 그리고 Cast는 조금 더 많은 정보를 반환하기 때문에 Overlap은 조금 더 단순한 감지에 사용하는 것이 좋을 것 같습니다.

'UnityEngine' 카테고리의 다른 글

[Unity] SceneManager  (0) 2025.07.21
[Unity] 싱글톤 패턴  (2) 2025.07.12
[Unity] 룰 타일 (Rule Tile)  (1) 2025.07.07
[Unity] 코드로 타일 깔기  (0) 2025.07.06
[Unity] Slider를 제어하는 프로퍼티와 메서드  (0) 2025.07.04