TIL_2025_02_26 RigidBody의 충돌

김효중·2025년 2월 26일

RigidBody의 충돌

RigidBody는 물체에 움직임, 중력, 충돌과 같은 물리적인 움직임을 구현할 수 있게한다.
이때 충돌을 하기 위해서는 Collider가 필요하다.
콜라이더는 물체의 충돌 범위를 나타냅니다.

RigidBody의 충돌 검사 모드

충돌은 검사 모드는 리지드 바디가 충돌을 감지하는데 사용하는 알고리즘을 정의한다.
각 모드(알고리즘)마다 정확도가 다르며 그에 따른 리소스가 필요하다

- Discrete(기본값)

불연속 충돌 검사 알고리즘을 사용하며, 매 프레임 그려지는 위치에 따라 충돌을 감지한다.

- Continous


스위핑 기반 충돌 검사 알고리즘은 잠재적인 충돌을 포함하여 계산한다.
위 사진에서 A는 시작 위치의 오브젝트 위치,C는 다음 프레임에서의 위치의 오브젝트의 위치,
B는 현재 속도를 기준으로 현재와 다음 프레임에 오브젝트가 통과될것으로 예상되는 영역이다.
A에서 C로 이동하는 동안 궤도 B상에서 장애물 D가 감지되었다면 이를 감지한다.
이를 통해 빠르게 움직이는 오브젝트에 대해서도 자세한 충돌 감지를 검사할 수 있는 장점이 있다.
대신 연산량이 늘어나며 직선적인 운동에서만 동작하는 단점이 있다.

- Continuous Speculative


추측성 충돌검사 알고리즘을 사용하며, 직선적인 운동에서 동작하는 스위핑 기반 충돌검사을 각운동에 대해 동작하도록 하였으며 리소스도 덜 사용한다.

추측성 충돌검사는 직선, 회전 운동에 대해 최소 경계상자(AABB)를 늘리는 방식으로 작동한다.
AABB는 이동 궤도의 가능한 모든 컨택트를 감지하여 충돌 누락을 방지하게 한다.
하지만 정확도가 떨어지며 충돌 누락, 허위 충돌의 위험이 있다.

상황별 사용 모드

Discrete

유용한 경우 : 천천히 움직이는 오브젝트의 충돌
피해야하는 경우 : 빠르게 움직이는 오브젝트의 충돌

- Continous

유용한 경우 : 빠르게 움직이며, 선형 운동을 하는 오브젝트
피해야하는 경우 : 회전하며 충돌하는 오브젝트, 움직이는 콜라이더와 충돌하는 오브젝트

- Continuous Speculative

유용한 경우 : 빠르게 움직이는 오브젝트, 회전체와 충돌하는 오브젝트
피해야하는 경우 : 빠르게 움직이는 오브젝트, 높은 정확도를 요구하는 경우

profile
도전하는 개발자

0개의 댓글