Advanced

충돌체의(Collider) 조합

Unity에서는 수많은 조합의 충돌이 발생 할 수 있습니다. 각 게임은 독특하여, 다양한 조합은 다른 타입의 게임에 대하여 더 잘 수행할 수 있을 것입니다. 만일 사용자가 게임에서 물리학을 사용하는 경우에는, 다른 기본 충돌체(Collider)의 종류, 그들의 일반적인 용도와 그들이 다른 타입의 오브젝트와 상호작용하는 방법을 이해하는 데 매우 도움이 될 것 입니다.

정적 충돌체(Static Collider)

리지드바디가 _부착되지 않았으나_ 충돌체가 _부착된_ 게임오브젝트(GameObjects)가 있습니다. 이러한 오브젝트는 가만이 있거나 아주 조금만 움직일 수 있습니다. 이는 주변환경 기하구조(geometry)에는 매우 잘 맞습니다. 리지드바디가 이들과 부딪혀도 움직이지 않을 것 입니다.

리지드바디 충돌체(Rigidbody Collider)

이 게임오브젝트(GameObjects)는 리지드바디와 충돌체를 모두 포함하니다. 이들은 스크립트 된 힘과 충돌을 통해 물리학 엔진에 완벽하게 영향을 받습니다. 이들은 충돌체를 포함하는 게임 오브젝트와 충돌할 수 있습니다. 이는 물리학을 사용하는 게임에서 사용자의 기본 충돌체 타입이 될 것 입니다.

키너매틱 리지드바디 충돌체(Kinematic Rigidbody Collider)

이 GameObject는 충돌체와 리지드바디를 포함하고 IsKinematic이라고 표시되어 있습니다. 이 게임오브젝트를 움직이려면, 사용자는 힘을 적용하기 보다는 그것의 Transform을 변경합니다. 이는 정적 충돌체(Static Colliders)와 비슷하지만 충돌체를 더 자주 움직이기를 원할 경우 더 작 동작합니다. 이 게임오브젝트를 사용하는 다른 몇몇 특화된 시나리오가 있습니다.

이 오브젝트는 사용자가 일반적으로 정적 충돌체(Static Collider)로 하여금 트리거 이벤트를 보내려 하는 경우에 사용할 수 있습니다. 트리거(Trigger)는 리지드바디가 부착되어 있으므로, 사용자는 리지드바디를 추가한 후, IsKinematic을 활성화 합니다. 이렇게 하면 사용자의 오브젝트가 물리 영향으로 움직이는 것을 방지하고, 원할 때 트리거 이벤트를 수신할 수 있게 해 줍니다.

키너매틱 리지드바디(Kinematic Rigidbodies)는 손쉽게 활성화 하거나 비활성화 할 수 있습니다. 이는 랙돌(ragdolls)을 생성하기에 좋으며, 사용자가 일반적으로 캐릭터가 애니매이션을 따르기를 원하여, 폭발 또는 사용자가 선택한 어떤 것에 의하여 충돌이 발생할 때 랙돌(ragdoll)로 변합니다. 이것이 발생하면, 스크립트를 통하여 단순히 사용자의 모든 키너매틱 리지드바디를 일반 리지드바디로 변화하도록 합니다.

만일 사용자가 일정시간 리지드바디를 쉬게 하고 당분간 움직이지 않으며, 그들은 "수면상태"가 됩니다. 즉, 이들은 아무데도 움직이지 않을 것이므로, 물리 업데이트(physics update) 동안 계산되지 않게 됩니다. 만일 키너매틱 리지드바디(Kinematic Rigidbodies)를 그 위에 쉬고 있는 일반 리지드바디의 아래에서 움직이면, 수면상태인 그 리지드바디는 "깨어나고" 다시 물리 업데이트에서 정확하게 계산됩니다. 그리므로 사용자가 주변으로 움직이고 싶은 정적 충돌체가(Static Colliders) 많이 있으며 여러 오브젝트에 이에 정확하게 떨어지면, 키너매틱 리지드바디 충돌체를 사용하기 바랍니다.

충돌 동작 표

충돌하는 두 오브젝트(Objects)의 설정에 따라, 여러 개의 다른 동작이 발생할 수 있습니다. 아래 표는 두 충돌하는 오브젝트에서 사용자가 예상할 수 있는 것의 그에 부착된 컴포넌트에 따라 개요를 담고 있습니다. 이 조합의 일부는 두 오브젝트 중 하나만 충돌에 영향을 받도록 할 것입니다. 그러므로, 물리학은 리지드바디가 부착되지 않은 오브젝트에는 적용되지 않는다는 표준 규칙을 항상 기억하기 바랍니다.

_ 충돌 감지 발생 및 충돌 시 메시지 전송됨_
Static Collider Rigidbody Collider Kinematic << Rigidbody Collider Static << Trigger Collider Rigidbody << Trigger Collider Kinematic Rigidbody << Trigger Collider
Static Collider Y
Rigidbody Collider Y Y Y
Kinematic Rigidbody Collider Y
Static Trigger Collider
Rigidbody Trigger Collider
Kinematic Rigidbody Trigger Collider
_ 충돌 시 메시지가 전송됨_
Static Collider Rigidbody Collider Kinematic << Rigidbody Collider Static << Trigger Collider Rigidbody << Trigger Collider Kinematic Rigidbody << Trigger Collider
Static Collider Y Y
Rigidbody Collider Y Y Y
Kinematic Rigidbody Collider Y Y Y
Static Trigger Collider Y Y Y Y
Rigidbody Trigger Collider Y Y Y Y Y Y
Kinematic Rigidbody Trigger Collider Y Y Y Y Y Y

계층 기반(Layer-based) 충돌 감지

LayerBasedCollision

Unity 3.x에서, Layer-Based Collision Detection라는 것을 도입하였습니다. 이로 인해 이제 사용자는 Unity 게임오브젝트에게 그들이 부착된 특정 계층(layers)와 충돌할 것을 선별적으로 지시할 수 있습니다. 더 자세한 정보를 보고자 한다면, 여기 를 클릭하기 바랍니다.

역링크