유니티 Rigidbody2D Collision Detection 옵션: 총알처럼 빨리 움직이는 물체 충돌 감지를 위한 셋팅
유니티에서 Rigidbody2D 컴포넌트를 사용할 때 Collision Detection 옵션은 두 가지 주요 모드를 제공합니다. Discrete 와 Continuous 이 옵션은 Rigidbody가 다른 오브젝트와 충돌을 감지하는 방식을 결정합니다. 2D 게임 개발 시 충돌 처리 방식을 올바르게 선택하는 것은 게임의 물리적 상호작용을 정확하고 신뢰할 수 있게 만드는 데 중요합니다.
Discrete Collision Detection
- 정의: Discrete 충돌 감지는 가장 기본적이고 성능이 가장 좋은 충돌 감지 방식입니다. 이 모드에서는 매 프레임마다 오브젝트의 위치를 체크하여 충돌을 감지합니다. 즉, 한 프레임에서 오브젝트가 특정 위치에 있고 다음 프레임에서는 완전히 다른 위치에 있을 때, 중간에 있는 모든 위치는 검사되지 않습니다.
- 사용 시나리오: 일반적인 경우에 적합하며, 대부분의 게임에서 충분히 좋은 결과를 제공합니다. 오브젝트가 서로에게 충분히 느리게 움직이거나, 매우 큰 충돌 영역을 가지고 있을 때 잘 작동합니다.
- 제한사항: 고속으로 움직이는 오브젝트나 작은 오브젝트 사이의 충돌을 감지하는 데 있어 터널링 현상이 발생할 수 있습니다. 이는 오브젝트가 너무 빠르게 움직여서 충돌을 감지하기 전에 다른 오브젝트를 완전히 통과해버리는 경우를 말합니다.
Continuous Collision Detection
- 정의: Continuous 충돌 감지는 더 정교한 충돌 감지 방식으로, 특히 고속으로 움직이는 오브젝트 사이의 충돌을 감지하는 데 유용합니다. 이 모드에서는 오브젝트가 이전 프레임에서 다음 프레임으로 이동하는 경로를 계산하여, 그 경로 상에서 발생할 수 있는 충돌을 감지합니다.
- 사용 시나리오: 작은 오브젝트가 빠르게 움직이거나, 고속의 오브젝트 사이의 충돌을 정확하게 감지해야 할 때 사용됩니다. 예를 들어, 총알이나 빠르게 움직이는 플레이어와 같은 경우에 적합합니다.
- 제한사항: 더 많은 계산을 요구하기 때문에, Continuous 모드는 Discrete 모드에 비해 성능에 더 큰 영향을 줄 수 있습니다. 따라서 필요한 오브젝트에만 이 모드를 사용하는 것이 좋습니다.
빠르게 움직이는 물체와 가만히 있는 물체의 충돌 감지가 필요한 상황: 빠르게 움직이는 물체만 Continuous 모드
빠르게 움직이는 물체와 빠르게 움직이는 물체의 충돌 감지가 필요한 상황: 둘 다 Continuous 모드