Version: 2018.1
2D 물리 레퍼런스
콜라이더 2D

리지드바디 2D

Rigidbody 2D 컴포넌트는 오브젝트를 물리 엔진이 제어하게 만듭니다. 스탠다드 Rigidbody 컴포넌트와 유사한 많은 개념이 리지드바디 2D에도 적용되나 2D에서는 오브젝트가 XY 평면에서만 움직이고 그 평면에 수직인 축을 중심으로만 회전한다는 점이 다릅니다.

Rigidbody 2D 컴포넌트. 선택한 바디 타입에 따라 Unity 에디터에 다르게 표시됩니다. 자세히 알아보려면 아래의 바디 타입을 참조하시기 바랍니다.
Rigidbody 2D 컴포넌트. 선택한 바디 타입에 따라 Unity 에디터에 다르게 표시됩니다. 자세히 알아보려면 아래의 바디 타입을 참조하시기 바랍니다.

리지드바디(Rigidbody) 2D 작동 방식

일반적으로 Unity 에디터의 Transform 컴포넌트는 게임 오브젝트 및 자식 게임 오브젝트가 씬 내에 배치, 회전 및 스케일되는 방식을 정의합니다. 컴포넌트가 변경되면 다른 컴포넌트를 업데이트하며, 이에 따라 컴포넌트가 렌더링되는 포지션이나 콜라이더가 배치되는 포지션 등이 업데이트될 수 있습니다. 2D 물리 엔진은 콜라이더를 움직이고 서로 상호작용하도록 할 수 있으며, 따라서 물리 엔진에서 콜라이더의 이러한 움직임을 Transform 컴포넌트에 다시 전달하기 위한 메서드가 필요합니다. 이러한 움직임 및 콜라이더와의 연결이 Rigidbody 2D 컴포넌트의 용도입니다.

Rigidbody 2D 컴포넌트는 트랜스폼을 오버라이드하고 리지드바디 2D에 의해 정의된 포지션/회전으로 업데이트합니다. Unity에서는 모든 컴포넌트의 모든 프로퍼티를 노출하므로 Transform 컴포넌트를 직접 수정하여 리지드바디 2D를 오버라이드할 수도 있지만, 그렇게 할 경우 게임 오브젝트가 서로 통과하는 것과 같은 문제 및 예측할 수 없는 움직임이 발생합니다.

같은 게임 오브젝트나 자식 게임 오브젝트에 추가되는 모든 Collider 2D 컴포넌트는 해당 리지드바디 2D에 암시적으로 연결됩니다. 콜라이더 2D가 리지드바디 2D에 연결되면 같이 움직입니다. 콜라이더 2D는 트랜스폼이나 콜라이더 오프셋을 사용하여 직접 이동시키면 안 됩니다. 대신 리지드바디 2D를 움직여야 합니다. 이에 따라 성능이 개선되고 정확한 충돌 검사가 가능합니다. 같은 리지드바디 2D에 연결된 콜라이더 2D는 서로 충돌하지 않습니다. 즉, 리지드바디 2D와 동기화되어 모두 함께 움직이고 회전하는 단일 복합 콜라이더와 같이 효과적으로 작동하는 콜라이더 세트를 만들 수 있습니다.

씬을 디자인할 때 원하는 대로 디폴트 리지드바디 2D를 사용하고 콜라이더를 연결할 수 있습니다. 이 콜라이더를 사용하면 다른 리지드바디 2D에 연결된 다른 콜라이더들과 서로 충돌할 수 있습니다.

팁(Tip)

Rigidbody 2D 를 추가하면 스크립팅 API에 힘을 적용해 스프라이트가 물리적으로 납득 가능한 방식으로 움직이게 합니다. 적절한 콜라이더 컴포넌트를 스프라이트 게임 오브젝트에 더하면 움직이는 다른 게임 오브젝트와 충돌하는 데 영향을 줍니다. 물리 연산을 활용하면 일반적인 게임 플레이의 많은 메카니즘을 단순화시키며 코딩을 최소화하면서도 사실감있는 동작을 구현할 수 있습니다.

바디 타입(Body Type)

Rigidbody 2D 컴포넌트의 상단에는 Body Type 이라고 표시된 설정이 있습니다. 여기서 선택하는 옵션은 컴포넌트에서 사용 가능한 다른 설정에 영향을 미칩니다.

Body Type 에는 세 가지 옵션이 있으며 각 옵션은 일반적이고 고정된 동작을 정의합니다. 리지드바디 2D에 연결된 모든 콜라이더 2D는 리지드바디 2D의 Body Type 을 상속합니다. 세 가지 옵션은 다음과 같습니다.

  • Dynamic
  • Kinematic
  • Static

선택하는 옵션에 따라 다음이 정의됩니다.

  • 움직임(포지션 및 회전) 동작
  • 콜라이더 상호작용

일반적으로 리지드바디 2D가 서로 충돌하는 것으로 묘사되지만 충돌하는 것은 리지드바디 2D의 각 바디에 연결된 콜라이더 2D입니다. 리지드바디 2D는 콜라이더 없이 서로 충돌하지 않습니다.

리지드바디 2D의 바디 타입을 변경하는 것은 까다로운 과정일 수 있습니다. 바디 타입이 변경되면 다양한 질량 관련 내부 프로퍼티가 즉시 다시 계산되며 게임 오브젝트의 다음 FixedUpdate 동안 리지드바디 2D에 연결된 콜라이더 2D의 모든 기존 접점을 다시 계산해야 합니다. 바디에 연결된 접점 및 콜라이더 2D의 수에 따라 바디 타입을 변경하면 성능에 변동이 있을 수 있습니다.

바디 타입(Body Type): 동적(Dynamic)

Dynamic 리지드바디 2D는 시뮬레이션 상태에서 움직이도록 디자인되었습니다. 한정된 질량과 드래그 등 모든 프로퍼티를 사용할 수 있으며 중력과 힘에 영향을 받습니다. 동적 바디는 다른 모든 바디 타입과 충돌하며 가장 인터랙티브한 바디 타입입니다. 이 바디 타입은 움직여야 하는 항목에 가장 일반적인 바디 타입이므로 리지드바디 2D의 디폴트 바디 타입입니다. 또한 동적 특성 및 주변의 모든 것과의 상호작용성으로 인해 성능 대비 비용이 가장 높은 바디 타입입니다. 이 바디 타입에는 모든 리지드바디 2D 프로퍼티를 사용할 수 있습니다.

Dynamic 리지드바디 2D의 포지션이나 회전을 설정하기 위해 Transform 컴포넌트를 사용하지 말아야 합니다. 시뮬레이션은 속도에 따라 Dynamic 리지드바디 2D를 재배치합니다. 스크립트에 의해 적용되는 힘을 통해 직접 변경하거나 충돌과 중력을 통해 간접적으로 변경할 수 있습니다.

프로퍼티: 기능:
Body Type 리지드바디 2D의 컴포넌트 설정을 설정하여 움직임(포지션 및 회전) 동작 및 콜라이더 2D 상호작용을 조작할 수 있습니다.
옵션은 다음과 같습니다. Dynamic, Kinematic, Static
Material 특정 부모 리지드바디 2D에 연결된 모든 콜라이더 2D의 공통 머티리얼을 지정하기 위해 사용합니다.
참고: 콜라이더 2D는 세트가 하나 있는 경우 자체 머티리얼 프로퍼티를 사용합니다. 여기나 콜라이더 2D에 머티리얼이 지정되지 않은 경우 디폴트 옵션은 None (Physics Material 2D) 입니다. 이 옵션은 Physics 2D Settings 창에서 설정할 수 있는 디폴트 머티리얼을 사용합니다.
콜라이더 2D는 우선 순위로 사용할 Material 설정을 결정합니다.
1. 콜라이더 2D 자체에 지정된 물리 머티리얼 2D.
2. 연결된 리지드바디 2D에 지정된 물리 머티리얼 2D.
Physics 2D Settings에 지정된 물리 머티리얼 2D 디폴트 머티리얼.
팁: 같은 Static 바디 타입 리지드바디 2D에 연결된 모든 콜라이더 2D에서 같은 머티리얼을 사용할 수 있도록 하려면 이 프로퍼티를 사용해야 합니다.
Simulated 리지드바디 2D 및 연결된 모든 콜라이더 2D와 조인트 2D가 런타임에 물리 시뮬레이션과 상호작용하도록 하려면 Simulated 를 활성화합니다(체크박스를 선택합니다). 비활성화되면(체크박스가 선택 해제되면) 이들 컴포넌트가 시뮬레이션과 상호작용하지 않습니다. 자세한 내용은 아래의 리지드바디 2D 프로퍼티: 시뮬레이션을 참조하십시오. 이 체크박스는 기본적으로 선택됩니다.
Use Auto Mass 리지드바디 2D가 콜라이더 2D에서 게임 오브젝트의 질량을 자동으로 감지하도록 하려면 체크박스를 선택합니다.
Mass 리지드바디 2D의 질량을 정의합니다. 오토 매스 사용을 선택한 경우 회색으로 표시됩니다.
Linear Drag 포지션 움직임에 영향을 미치는 저항계수입니다.
Angular Drag 회전 움직임에 영향을 미치는 저항계수입니다.
Gravity Scale 게임 오브젝트가 중력의 영향을 받는 정도를 정의합니다.
Collision Detection 콜라이더 2D 간의 충돌을 검사하는 방식을 정의합니다.
        Discrete Collision DetectionDiscrete 로 설정하면 리지드바디 2D 및 콜라이더 2D가 포함된 게임 오브젝트가 충분히 빨리 움직이는 경우 물리 업데이트 시 서로 겹치거나 통과할 수 있습니다. 충돌 접점은 새 포지션에서만 생성됩니다.
        Continuous Collision DetectionContinuous 로 설정하면 업데이트할 때 리지드바디 2D와 콜라이더 2D가 포함된 게임 오브젝트가 서로 통과하지 않습니다. 대신 Unity는 콜라이더 2D의 첫 번째 충돌 포인트를 산출하고 게임 오브젝트를 거기로 이동시킵니다. 이 방식은 Discrete 보다 더 많은 CPU 시간을 사용합니다.
Sleeping Mode 게임 오브젝트가 휴식 상태일 때 프로세서 시간을 절약하기 위해 “수면”모드에 들어가는 방법을 정의합니다.
        Never Sleep 수면 모드가 비활성화됩니다(시스템 리소스에 영향을 미칠 수 있으므로 가능하면 비활성화하지 말아야 합니다).
        Start Awake 처음에 게임 오브젝트가 깨어 있습니다.
        Start Asleep 처음에 게임 오브젝트가 수면 상태이지만 충돌하면 깨어납니다.
Interpolate 물리 업데이트 사이에 게임 오브젝트 움직임이 보간되는 방법을 정의합니다(이는 움직임이 어색할 때 유용합니다).
        None 움직임에 스무딩을 적용하지 않습니다.
        Interpolate 이전 프레임에서의 게임 오브젝트 포지션에 근거해 움직임을 스무딩합니다.
        Extrapolate 다음 프레임에서의 게임 오브젝트 포지션을 추정해 움직임을 스무딩합니다.
Constraints 리지드바디 2D의 움직임에 대한 제약사항을 정의합니다.
Freeze Position 월드의 X 및 Y 축에서 움직이는 리지드바디 2D를 선택적으로 정지시킵니다.
Freeze Rotation Z 축을 중심으로 회전하는 리지드바디 2D를 선택적으로 정지시킵니다.

바디 타입(Body Type): 키네마틱

Kinematic 리지드바디 2D는 시뮬레이션 상태에서, 그리고 매우 명확한 사용자 제어 하에서 움직이도록 디자인되었습니다. Dynamic 리지드바디 2D는 중력과 힘의 영향을 받지만 Kinematic 리지드바디 2D는 영향을 받지 않습니다. 이러한 이유로 빠르고 Dynamic 리지드바디 2D보다 시스템 리소스가 덜 필요합니다. Kinematic 리지드바디 2D는 Rigidbody2D.MovePosition 또는 Rigidbody2D.MoveRotation을 통해 명확히 재배치되도록 디자인되었습니다. 충돌을 검사하려면 물리 쿼리를, 리지드바디 2D가 이동해야 하는 포지션 및 방식을 결정하려면 스크립트를 사용해야 합니다.

Kinematic 리지드바디 2D는 여전히 속도를 통해 움직이지만 속도가 힘이나 중력의 영향을 받지 않습니다. Kinematic 리지드바디 2D는 다른 Kinematic 리지드바디 2D나 Static 리지드바디 2D와 충돌하지 않고 Dynamic 리지드바디 2D와만 충돌합니다. Static 리지드바디 2D(아래 참조)와 마찬가지로, Kinematic 리지드바디 2D는 충돌 시 (질량이 무한하여)움직일 수 없는 오브젝트처럼 작동합니다. 바디 타입에는 질량 관련 프로퍼티를 사용할 수 없습니다.

프로퍼티: 기능:
Body Type 리지드바디 2D의 컴포넌트 설정을 설정하여 움직임(포지션 및 회전) 동작 및 콜라이더 2D 상호작용을 조작할 수 있습니다.
옵션은 다음과 같습니다. Dynamic, Kinematic, Static
Material 특정 부모 리지드바디 2D에 연결된 모든 콜라이더 2D의 공통 머티리얼을 지정하기 위해 사용합니다.
참고: 콜라이더 2D는 세트가 하나 있는 경우 자체 머티리얼 프로퍼티를 사용합니다. 여기나 콜라이더 2D에 머티리얼이 지정되지 않은 경우 디폴트 옵션은 None (Physics Material 2D) 입니다. 이 옵션은 Physics 2D Settings 창에서 설정할 수 있는 디폴트 머티리얼을 사용합니다.
콜라이더 2D는 우선 순위로 사용할 Material 설정을 결정합니다.
1. 콜라이더 2D 자체에 지정된 물리 머티리얼 2D.
2. 연결된 리지드바디 2D에 지정된 물리 머티리얼 2D.
Physics 2D Settings에 지정된 물리 머티리얼 2D 디폴트 머티리얼.
팁: 같은 Static 바디 타입 리지드바디 2D에 연결된 모든 콜라이더 2D에서 같은 머티리얼을 사용할 수 있도록 하려면 이 프로퍼티를 사용해야 합니다.
Simulated 리지드바디 2D 및 연결된 모든 콜라이더 2D와 조인트 2D가 런타임에 물리 시뮬레이션과 상호작용하도록 하려면 Simulated 를 활성화합니다(체크박스를 선택합니다). 비활성화되면(체크박스가 선택 해제되면) 이들 컴포넌트가 시뮬레이션과 상호작용하지 않습니다. 자세한 내용은 아래의 리지드바디 2D 프로퍼티: 시뮬레이션을 참조하십시오. 이 체크박스는 기본적으로 선택됩니다.
Use Full Kinematic Contacts Kinematic 리지드바디 2D가 모든 리지드바디 2D 바디 타입과 충돌하도록 하려면 설정을 활성화합니다(체크박스를 선택합니다). 설정은 Dynamic 리지드바디 2D와 비슷하지만, Kinematic 리지드바디 2D는 다른 Rigidbody 2D 컴포넌트와 접촉할 때 물리 엔진에 의해 움직이지 않고 대신 질량이 무한한 움직일 수 없는 오브젝트처럼 작동합니다. Use Full Kinematic Contacts 가 비활성화되면 Kinematic 리지드바디 2D는 Dynamic 리지드바디 2D와만 충돌합니다. 자세한 내용은 아래의 리지드바디 2D 프로퍼티: 풀 키네마틱 콘택트 사용을 참조하십시오. 체크박스는 기본적으로 선택 해제됩니다.
Collision Detection 콜라이더 2D 간의 충돌을 검사하는 방식을 정의합니다.
        Discrete Collision DetectionDiscrete 로 설정하면 리지드바디 2D 및 콜라이더 2D가 포함된 게임 오브젝트가 충분히 빨리 움직이는 경우 물리 업데이트 시 서로 겹치거나 통과할 수 있습니다. 충돌 접점은 새 포지션에서만 생성됩니다.
        Continuous Collision DetectionContinuous 로 설정하면 업데이트할 때 리지드바디 2D와 콜라이더 2D가 포함된 게임 오브젝트가 서로 통과하지 않습니다. 대신 Unity는 콜라이더 2D의 첫 번째 충돌 포인트를 산출하고 게임 오브젝트를 거기로 이동시킵니다. 이 방식은 Discrete 보다 더 많은 CPU 시간을 사용합니다.
Sleeping Mode 게임 오브젝트가 휴식 상태일 때 프로세서 시간을 절약하기 위해 “수면”모드에 들어가는 방법을 정의합니다.
        Never Sleep 수면 모드가 비활성화됩니다(시스템 리소스에 영향을 미칠 수 있으므로 가능하면 비활성화하지 말아야 합니다).
        Start Awake 처음에 게임 오브젝트가 깨어 있습니다.
        Start Asleep 처음에 게임 오브젝트가 수면 상태이지만 충돌하면 깨어납니다.
Interpolate 물리 업데이트 사이에 게임 오브젝트 움직임이 보간되는 방법을 정의합니다(이는 움직임이 어색할 때 유용합니다).
        None 움직임에 스무딩을 적용하지 않습니다.
        Interpolate 이전 프레임에서의 게임 오브젝트 포지션에 근거해 움직임을 스무딩합니다.
        Extrapolate 다음 프레임에서의 게임 오브젝트 포지션을 추정해 움직임을 스무딩합니다.
Constraints 리지드바디 2D의 움직임에 대한 제약사항을 정의합니다.
        Freeze Position 월드의 x 및 y 축에서 움직이는 리지드바디 2D를 선택적으로 정지시킵니다.
        Freeze Rotation 월드의 z 축을 중심으로 회전하는 리지드바디 2D를 선택적으로 정지시킵니다.

바디 타입(Body Type): 정적( Static)

Static 리지드바디 2D는 시뮬레이션 상태에서 전혀 움직이지 않도록 디자인되었습니다. 다른 오브젝트와 충돌하는 경우 Static 리지드바디 2D는 (질량이 무한하여) 움직일 수 없는 오브젝트처럼 작동합니다. 또한 리소스를 가장 덜 사용하는 바디 타입입니다. Static 바디는 Dynamic 리지드바디 2D와만 충돌합니다. Static 리지드바디 2D는 움직이지 않도록 디자인되었기 때문에 서로 충돌할 수 없습니다.

이 바디 타입에는 매우 제한된 프로퍼티만 사용할 수 있습니다.

프로퍼티: 기능:
Body Type 리지드바디 2D의 컴포넌트 설정을 설정하여 움직임(포지션 및 회전) 동작 및 콜라이더 2D 상호작용을 조작할 수 있습니다.
옵션은 다음과 같습니다. Dynamic, Kinematic, Static
Material 특정 부모 리지드바디 2D에 연결된 모든 콜라이더 2D의 공통 머티리얼을 지정하기 위해 사용합니다.
참고: 콜라이더 2D는 세트가 하나 있는 경우 자체 머티리얼 프로퍼티를 사용합니다. 여기나 콜라이더 2D에 머티리얼이 지정되지 않은 경우 디폴트 옵션은 None (Physics Material 2D) 입니다. 이 옵션은 Physics 2D Settings 창에서 설정할 수 있는 디폴트 머티리얼을 사용합니다.
콜라이더 2D는 우선 순위로 사용할 Material 설정을 결정합니다.
1. 콜라이더 2D 자체에 지정된 물리 머티리얼 2D.
2. 연결된 리지드바디 2D에 지정된 물리 머티리얼 2D.
Physics 2D Settings에 지정된 물리 머티리얼 2D 디폴트 머티리얼.
팁: 같은 Static 바디 타입 리지드바디 2D에 연결된 모든 콜라이더 2D에서 같은 머티리얼을 사용할 수 있도록 하려면 이 프로퍼티를 사용해야 합니다.
Simulated 리지드바디 2D 및 연결된 모든 콜라이더 2D와 조인트 2D가 런타임에 물리 시뮬레이션과 상호작용하도록 하려면 Simulated 를 활성화합니다(체크박스를 선택합니다). 비활성화되면(체크박스가 선택 해제되면) 이들 컴포넌트가 시뮬레이션과 상호작용하지 않습니다. 자세한 내용은 아래의 리지드바디 2D 프로퍼티: 시뮬레이션을 참조하십시오. 이 체크박스는 기본적으로 선택됩니다.

리지드바디 2D를 Static 으로 표시하는 데는 두 가지 방법이 있습니다.

  1. Collider 2D 컴포넌트가 포함된 게임 오브젝트의 경우 Rigidbody 2D 컴포넌트가 전혀 포함되지 않도록 합니다. 이러한 콜라이더 2D는 모두 내부적으로 숨겨진 단일 Static Rigidbody 2D 컴포넌트에 연결된 것으로 간주됩니다.

  2. 게임 오브젝트에 리지드바디 2D가 포함되고 해당 리지드바디 2D를 Static 으로 설정합니다.

방법 1은 빠르게 Static 콜라이더 2D를 만들 수 있는 방법입니다. Static 콜라이더 2D를 많이 생성할 때는 콜라이더 2D가 포함된 각 게임 오브젝트에 리지드바디 2D를 추가하지 않는 것이 더 쉽습니다.

방법 2는 퍼포먼스와 관련한 이유로 필요합니다. Static 콜라이더 2D를 런타임 시 움직이거나 재구성해야 하는 경우 자체 리지드바디 2D가 있을 때 그렇게 하는 것이 더 빠릅니다. 여러 콜라이더 2D를 런타임 시 움직이거나 재구성해야 하는 경우 각 게임 오브젝트를 개별적으로 움직이는 것보다 모두 Static 으로 표시된 한 부모 리지드바디 2D의 자식으로 지정하는 것이 더 빠릅니다.

참고: 위에 설명되었듯이 Static 리지드바디 2D는 움직이지 않도록 디자인되었으며 교차하는 두 Static 리지드바디 2D 오브젝트 간의 충돌은 등록되지 않습니다. 하지만, Static 리지드바디 2D와 Kinematic 리지드바디 2D는 콜라이더 2D 중에서 하나가 트리거로 설정된 경우 서로 교차합니다. Kinematic 바디가 교차하는 대상을 변경하는 기능도 있습니다(아래 풀 키네마틱 콘택트 사용 참조).

리지드바디 2D(Rigidbody 2D) 프로퍼티

시뮬레이션(Simulated)

리지드바디 2D 및 연결된 콜라이더 2D와 조인트 2D가 2D 물리 시뮬레이션과의 상호작용을 중지(선택 해제됨)하거나 시작(선택됨)하도록 하려면 Simulated 프로퍼티를 사용합니다. 이 프로퍼티를 변경하는 것이 개별 Collider 2D 및 Joint 2D 컴포넌트를 활성화하거나 비활성화하는 것보다 메모리와 프로세서를 훨씬 더 효율적으로 사용합니다.

Simulated 상자를 선택하면 다음과 같은 일이 발생합니다.

  • 리지드바디 2D가 시뮬레이션을 통해 움직입니다(중력과 물리적 힘이 적용됩니다).
  • 연결된 모든 콜라이더 2D가 새로운 접점을 계속 생성하고 계속해서 접점을 다시 평가합니다.
  • 연결된 모든 조인트 2D가 시뮬레이션되고 연결된 리지드바디 2D를 제약합니다.
  • 리지드바디 2D, 콜라이더 2D 및 조인트 2D의 모든 내부 물리 오브젝트가 메모리에 남아 있습니다.

Simulated 체크박스가 선택 해제되면 다음과 같은 일이 발생합니다.

  • 리지드바디 2D가 시뮬레이션에 의해 움직이지 않습니다(중력과 물리적 힘이 적용되지 않습니다).
  • 리지드바디 2D가 새로운 접점을 생성하지 않고 연결된 모든 콜라이더 2D 접점이 파괴됩니다.
  • 연결된 어느 조인트 2D도 시뮬레이션되지 않고 연결된 어느 리지드바디 2D도 제약하지 않습니다.
  • 리지드바디 2D, 콜라이더 2D 및 조인트 2D의 모든 내부 물리 오브젝트가 메모리에 남아 있습니다.

시뮬레이션된 모드를 선택 해제하는 것이 개별 컴포넌트 컨트롤보다 효율적인 이유는 무엇입니까?

2D 물리 시뮬레이션에서는 Rigidbody 2D 컴포넌트가 연결된 Collider 2D 컴포넌트의 포지션과 회전을 제어하고 Joint 2D 컴포넌트에서 이 포지션과 회전을 앵커 포인트로 사용할 수 있도록 합니다. 콜라이더 2D는 연결된 리지드바디 2D가 움직일 때 움직입니다. 콜라이더 2D는 그런 다음 다른 리지드바디 2D에 연결된 다른 콜라이더 2D와의 접점을 계산합니다. 조인트 2D는 또한 리지드바디 2D 포지션과 회전을 제약합니다. 이 모든 작업이 시뮬레이션 시간을 사용합니다.

컴포넌트를 개별적으로 활성화 및 비활성화하여 2D 물리 시뮬레이션의 개별 요소를 중지하고 시작할 수 있습니다. Collider 2D와 Joint 2D 컴포넌트에서 모두 가능합니다. 하지만, 물리 시뮬레이션의 개별 요소를 활성화 및 비활성화하는 데는 메모리가 많이 사용되고 프로세서의 파워 비용이 많이 듭니다. 시뮬레이션의 요소가 비활성화되면 2D 물리 엔진에서 시뮬레이션하기 위한 내부 물리 기반 오브젝트를 생성하지 않습니다. 시뮬레이션의 요소가 활성화되면 2D 물리 엔진에 시뮬레이션할 내부 물리 기반 오브젝트가 있습니다. 2D 물리 시뮬레이션 컴포넌트를 활성화하고 비활성화하면 내부 게임 오브젝트 및 물리 기반 컴포넌트를 생성하고 파괴해야 합니다. 시뮬레이션을 비활성화하는 것이 개별 컴포넌트를 비활성화하는 것보다 더 쉽고 효율적입니다.

참고: 리지드바디 2D의 Simulated 옵션이 선택 해제되면 연결된 모든 Collider 2D가 효과적으로 ‘보이지 않게’ 됩니다. 즉 Physics.Raycast와 같은 물리 쿼리에서 감지할 수 없습니다.

풀 키네마틱 콘택트 사용

Kinematic 리지드바디 2D가 모든 리지드바디 2D 바디 타입과 충돌하도록 하려면 설정을 활성화합니다(체크박스를 선택합니다). 설정은 Dynamic 리지드바디 2D와 비슷하지만, Kinematic 리지드바디 2D는 다른 리지드바디 2D와 접촉할 때 물리 엔진에 의해 움직이지 않고 질량이 무한한 움직일 수 없는 오브젝트로 작동합니다.

설정이 비활성화(선택 해제)되면 Kinematic 리지드바디 2D가 Dynamic 리지드바디 2D와만 충돌합니다. 다른 Kinematic 리지드바디 2D나 Static 리지드바디 2D와는 충돌하지 않습니다(트리거 콜라이더는 이 규칙의 예외입니다). 즉, 충돌 스크립팅 콜백(OnCollisionEnter, OnCollisionStay, OnCollisionExit)이 발생합니다.

물리 쿼리(예: Physics.Raycast)를 사용하여 리지드바디 2D가 이동해야 하는 포지션 및 방법을 감지하고, 여러 Kinematic 리지드바디 2D가 서로 상호작용하도록 해야 하는 경우 이 설정이 유용하지 않을 수 있습니다. Kinematic Rigidbody 2D 컴포넌트가 이러한 방식으로 상호작용하도록 하려면 Use Full Kinematic Contacts 를 활성화해야 합니다.

Use Full Kinematic Contacts 를 사용하면 Kinematic 리지드바디 2D의 포지션 및 회전을 명확히 제어할 수 있으며 전체 충돌 콜백도 가능합니다. 모든 리지드바디 2D를 명확히 제어해야 하는 환경에서 전체 충돌 콜백 지원이 필요하면 Dynamic 리지드바디 2D 대신 Kinematic 리지드바디 2D를 사용해야 합니다.

2D 물리 레퍼런스
콜라이더 2D