Version: 2023.2
언어: 한국어
콜라이더 타입
콜라이더 타입 간 상호작용

콜라이더 타입 소개

콜라이더 타입은 게임 오브젝트의 콜라이더 및 물리 바디 컴포넌트의 설정에 따라 다른 콜라이더와 상호작용하는 방식을 정의합니다.

Unity 기술 자료에서 가리키는 콜라이더 타입은 다음과 같습니다.

  • 정적 콜라이더: 게임 오브젝트에 콜라이더는 있지만 물리 바디(리지드바디 또는 관절 바디)가 없습니다.
  • 물리 바디 콜라이더: 게임 오브젝트에 콜라이더와 물리 바디가 있습니다.
    • 동적 콜라이더: 게임 오브젝트의 물리 바디가 동적입니다(Is Kinematic이 비활성화되어 있음).
    • 키네마틱 리지드바디 콜라이더: 게임 오브젝트의 리지드바디가 키네마틱입니다(Is Kinematic이 활성화되어 있음). 관절 바디는 키네마틱이 될 수 없습니다.

자세한 내용은 리지드바디 물리 소개를 참조하십시오.

정적 콜라이더

정적 콜라이더는 연결된 리지드바디 또는 관절 바디가 없는(즉, 연결된 게임 오브젝트에 리지드바디 또는 관절 바디가 없는) 콜라이더로, 시뮬레이션된 물리 힘에 반응하지 않습니다. 다른 콜라이더가 정적 콜라이더와 충돌할 수 있지만, 정적 콜라이더는 충돌에 반응하여 움직이지 않습니다.

항상 같은 위치에 있고 절대 움직이지 않는 지오메트리(예: 바닥, 벽 및 씬의 기타 움직이지 않는 요소)에는 정적 콜라이더를 사용합니다.

런타임 시 정적 콜라이더를 옮기는 유일한 방법은 트랜스폼을 사용하는 것입니다. 그러나 대부분의 경우 이 방법을 사용해서는 안 됩니다. 물리 시스템은 물리 업데이트를 계산하는 동안 트랜스폼으로 인한 움직임을 즉시 고려하지 못하며, 트랜스폼을 통해 정적 콜라이더를 옮기면 의도치 않은 부작용이 나타날 수 있습니다. 대신 런타임 시 움직이지 않는 콜라이더 지오메트리에만 정적 콜라이더를 사용해야 합니다. 물리 힘에 반응하지 않지만 물리 시스템이 감지하고 계산할 수 있는 방식으로 런타임 시 움직일 수 있는 콜라이더를 찾는다면 키네마틱 물리 바디 콜라이더를 사용하는 것이 좋습니다.

정적 콜라이더는 이동하는 콜라이더나 일시적 콜라이더로 설계되지 않았으므로, 물리 시스템은 정적 콜라이더가 움직이거나 사라지는 것에 반응하여 물리 바디를 다시 계산하거나 초기화하지 않습니다. 예를 들어, 물리 바디와 휠 콜라이더가 있는 자동차를 정적 콜라이더에 배치하면 휠 콜라이더가 콜라이더를 감지하고 그 위에 올라갑니다. 입력 없이 몇 프레임이 지나면 자동차의 물리 바디와 콜라이더가 수면 상태로 전환됩니다. 정적 콜라이더가 움직이면 자동차가 함께 움직이거나 떨어질 것으로 예상할 수 있습니다. 그러나 물리 시스템은 정적 콜라이더의 움직임에 반응하여 자동차의 물리 바디를 초기화하지 않으므로 자동차는 그 자리에 그대로 유지됩니다.

물리 바디 콜라이더

물리 바디 콜라이더는 물리 바디(리지드바디 또는 관절 바디)와 동일한 게임 오브젝트에 있는 콜라이더입니다. 물리 바디 콜라이더는 물리 계산에 포함되지만 동적인지 또는 키네마틱인지(Is Kinematic의 활성화 여부)에 따라 동작이 달라집니다.

리지드바디는 동적 또는 키네마틱이 될 수 있습니다. 관절 바디는 동적만 될 수 있으며, 키네마틱은 불가능합니다.

동적 콜라이더

동적 콜라이더는 동적 물리 바디와 동일한 게임 오브젝트에 있는 콜라이더입니다. 동적 콜라이더는 시뮬레이션된 물리 힘에 반응합니다. 다른 오브젝트(정적 콜라이더 포함)와 충돌할 수 있으며, 다른 콜라이더가 옮기거나 힘을 가할 수 있습니다.

물리 시스템이 물리 계산에 포함시키고 물리 힘을 통해 옮기도록 하려는 모든 게임 오브젝트에 동적 콜라이더를 사용하십시오.

물리 바디 콜라이더는 기본적으로 동적입니다.

키네마틱 콜라이더

키네마틱 콜라이더는 키네마틱 리지드바디와 동일한 게임 오브젝트에 있는 콜라이더입니다. 관절 바디는 키네마틱이 될 수 없습니다.

정적 콜라이더와 마찬가지로 키네마틱 콜라이더는 시뮬레이션된 물리 힘에 반응하지 않습니다. 다른 콜라이더가 키네마틱 콜라이더와 충돌할 수 있지만, 키네마틱 콜라이더는 충돌에 반응하여 움직이지 않습니다.

정적 콜라이더와 다르게, 물리 시스템은 물리 계산에 키네마틱 콜라이더를 포함할 수 있습니다. 키네마틱 콜라이더는 다음을 할 수 있습니다.

  • 다른 콜라이더가 접촉할 때 해당 콜라이더를 수면 상태에서 깨웁니다.
  • 트리거 콜라이더 역할을 하고 다른 콜라이더로부터 트리거 이벤트를 수신합니다.
  • 다른 콜라이더에 마찰을 적용합니다.

대부분 정적 콜라이더처럼 작동하지만 가끔 움직일 수 있어야 하는 콜라이더(예: 평소에는 움직이지 않는 물리적 장애물 역할을 하지만 필요할 때는 열 수 있는 슬라이딩 도어)에는 키네마틱 콜라이더를 사용합니다.

Rigidbody.isKinematic을 사용하면 런타임 시 필요에 따라 스크립트를 통해 리지드바디 콜라이더를 동적과 키네마틱으로 전환할 수 있습니다. 이는 항상 동적일 필요가 없는 콜라이더의 성능을 관리하는 데 유용한 방법일 수 있습니다. 예를 들어, 콜라이더 타입 전환의 일반적인 사용 사례는 캐릭터가 평소에는 애니메이션으로 움직이다가 강한 충돌이 발생하면 물리적으로 반응하는 ‘래그돌’ 효과를 만드는 것입니다. 캐릭터의 팔다리는 기본적으로 키네마틱이며 애니메이션을 통해 움직이지만, 특정 콜라이더가 리지드바디를 트리거하여 IsKinematic을 비활성화하면 팔다리가 동적이 되고 물리 오브젝트처럼 동작합니다.

콜라이더 상호작용

다양한 콜라이더 타입(정적, 키네마틱, 동적)은 각 콜라이더 페어의 설정에 따라 다르게 상호작용합니다. 자세한 내용은 콜라이더 상호작용을 참조하십시오.

콜라이더 타입
콜라이더 타입 간 상호작용