public static Collider2D OverlapBox
(
Vector2 point,
Vector2 size,
float angle,
int layerMask = DefaultRaycastLayers,
float minDepth = -Mathf.Infinity,
float maxDepth = Mathf.Infinity
);
인자로 넣어준 박스 범위 내에 Collider2D가 존재하면 해당 Collider를 반환한다.
만약 해당 영역에 Collider가 없으면 null을 반환한다.
2D에서는 Z축이 렌더링이나 충돌에 직접적인 영향을 주지 않지만, minDepth와 maxDepth를 활용해 Z 좌표를 기준으로 객체를 필터링할 수 있다.
OverlapBox 내부에 여러 Collider가 포함될 경우, 가장 낮은 Z 좌표를 가진 Collider가 반환된다.
public static int OverlapBox
(
Vector2 point,
Vector2 size,
float angle,
ContactFilter2D contactFilter,
Collider2D[] results
);
Overlap된 Collider들의 개수를 반환한다.
배열의 크기만큼 Collider를 탐색하여 반환하며, 배열 크기보다 많은 Collider가 있어도 추가 탐색은 진행되지 않는다.
ContactFilter2D를 통해 필터링이 가능하다. (ZDepth, Trigger, LayerMask 등)
배열 크기보다 많은 Collider가 존재하더라도, 최대 배열 크기까지만 저장된다.
만약 크기 0인 배열을 넘겨주면 아무 결과도 반환되지 않는다!
public static int OverlapBox
(
Vector2 point,
Vector2 size,
float angle,
ContactFilter2D contactFilter,
List<Collider2D> results
);
Overlap된 Collider들의 개수를 반환한다.
List<Collider2D>를 인자로 받으므로, 저장할 공간이 부족하면 자동으로 리스트 크기가 조정된다.
불필요한 메모리 할당을 방지하고, 자주 실행되는 쿼리의 경우 가비지 컬렉션(GC) 성능을 향상시킨다.
비어 있는 List<Collider2D>를 넘겨줘도 자동으로 크기를 조정하여 결과를 저장할 수 있다.
public static int OverlapCollider(Collider2D collider, List<Collider2D> results);
인자로 넘겨준 Collider2D와 충돌한 모든 Collider의 개수를 반환한다.
인자로 넘겨준 List<Collider2D>에 닿은 모든 Collider를 추가한다.
List<Collider2D>가 부족하면 자동으로 크기를 조절하여 결과를 저장한다.
public static int OverlapCollider
(
Collider2D collider,
ContactFilter2D contactFilter,
List<Collider2D> results
);
필터링된 Overlap된 Collider들의 개수를 반환한다.
ContactFilter2D를 사용해 LayerMask, Trigger 설정, Depth 필터링 등 다양한 조건을 추가할 수 있다.
List<Collider2D>가 부족하면 자동으로 크기를 조정하여 결과를 저장한다.
public static int OverlapCollider
(
Collider2D collider,
ContactFilter2D contactFilter,
Collider2D[] results
);
필터링된 Overlap된 Collider들의 개수를 반환한다.
ContactFilter2D를 활용하여 레이어, 트리거 여부, 깊이 필터링이 가능하다.
Collider2D[]을 인자로 받으므로, 배열 크기보다 많은 Collider가 존재하더라도,
최대 배열 크기까지만 저장된다.
배열의 크기가 너무 작으면 일부 결과가 저장되지 않으므로,
적절한 크기로 설정하는 것이 중요하다.
overlapcollider함수는 Active 상태의 collider을 사용해야한다.
deactivate상태거나 onenabled가 꺼져있는 collider로 overlap을 사용하면 제대로 감지가 안 된다!
또한 이건 했던 실수인데 collider의 bound.size값 받아와서 overlapbox함수를 사용하려했다.
문제는 collider가 꺼져있다면 bound.size값 0으로 받아와진다..