Unity에서 Collider 충돌처리가 되지 않을 경우
Unity에서 Collider가 있는 두 오브젝트가 충돌하면 일반적으로 물리법칙에 따라 서로 밀거나 튕겨나가는 동작을 합니다. 하지만, 다음과 같은 경우에 Collider가 있는데도 충돌했을 때 물리법칙을 따르지 않는 경우가 있습니다.
- Collider의 Rigidbody가 없는 경우
Collider는 물리적 상호 작용을 처리하는 Rigidbody와 함께 사용해야 합니다. Rigidbody가 없는 Collider는 물리적 상호 작용을 처리할 수 없으므로, 충돌했을 때 물리법칙을 따르지 않는 경우를 만들 수 있습니다.
- 물체가 너무 빨리 움직여 충돌을 놓친 경우
물체가 한 프레임 사이에 너무 큰 거리를 이동하여 충돌을 감지하지 못하는 경우입니다. 이를 해결하기 위해서는 Rigidbody 컴포넌트의 Interpolate 옵션을 적절히 설정하거나, 물리 시뮬레이션의 정확도를 높여야 합니다.
- 물체가 너무 작은 경우
물체의 크기가 작아질수록 Unity Physics Engine에서 물체의 충돌을 감지하기 어려워집니다. 이러한 경우에 Collision Detection을 Discrete로 사용하고 있다면 물체의 충돌을 감지하기가 어렵습니다.
- Collider의 Trigger 속성이 true인 경우
Collider의 Trigger 속성이 true인 경우 해당 오브젝트는 충돌을 감지하지만, 물리적 상호 작용은 발생하지 않습니다. 따라서, 다른 오브젝트와 충돌하더라도 물리법칙에 따라 움직이지 않습니다.
- Collider의 Static 속성이 true인 경우
Collider의 Static 속성이 true인 경우 해당 오브젝트는 고정되어 있다고 간주됩니다. 따라서, 다른 오브젝트와 충돌하더라도 물리법칙에 따라 움직이지 않습니다.
- Collider의 CollisionFlags 속성이 설정되어 있는 경우
Collider의 CollisionFlags 속성을 사용하여 충돌 이벤트를 제어할 수 있습니다. 이 속성을 사용하여 충돌 이벤트를 무시할 수 있으므로, collider가 있는데도 충돌했을 때 물리법칙을 따르지 않는 경우를 만들 수 있습니다.