Unity/이븐아이 게임톤 6기

[Unity 2D] OverlapCapsuleAll 판정 범위

goliot 2024. 1. 28. 19:30
반응형

1. Physics2D.OverlapCapsuleAll(transform.position, capsuleCollider.size, CapsuleDirection2D.Horizontal, 0f);
2. 이 코드가 콜라이더의 크기를 그대로 가져와서 판정을 하는 코드인 줄 알았음.
3. 그러나 실제로는

- 파란 동그라미 친 부분처럼 이상한 부분만을 판정하고 있었음

 

### 원인

- 콜라이더가 Horizontal로 설정되어 있었음

- 로컬 스케일을 적용하지 않았음

 

### 해결

Collider2D[] aegsoniaColliders = Physics2D.OverlapCapsuleAll(transform.position, new Vector2(capsuleCollider.size.y * capsuleCollider.transform.localScale.y, capsuleCollider.size.x * capsuleCollider.transform.localScale.x), CapsuleDirection2D.Vertical, 0f);

- 로컬스케일을 적용해 주고, Vertical로 하기 위해 x, y의 사이즈를 뒤집었음

 

 

*참고: 같은 사이즈의 콜라이더에서 vertical과 horizontal의 차이*

Horizontal
Vertical

 

*참고 2. 디버깅 용으로 라인이나 박스를 그려서 콜라이더를 확인하는 방법

https://forum.unity.com/threads/debug-drawbox-function-is-direly-needed.1038499/

반응형