리지드바디와 콜라이더 - TeamCrazyPerformance/Game_study GitHub Wiki

Rigidbody

  • 리지드바디를 게임 오브젝트에 추가하면 그 오브젝트는 물리 시뮬레이션에 의해 제어된다. 충돌, 중력, 운동 등과 같은 물리 특성들이 자동으로 처리된다. 리지드바디는 2D 게임과 3D 게임 모두에서 사용할 수 있으며, 각각 2D용 리지드바디와 3D용 리지드바디 컴포넌트가 있다. 일반적으로 리지드바디는 3D 리지드바디를 칭한다. 리지드바디의 주요 속성과 기능에는 다음과 같은 것들이 있다.
    • 질량(Mass): 오브젝트의 질량을 지정할 수 있으며, 질량이 큰 오브젝트는 충돌시에 더 큰 힘을 전달한다.
    • 중력(Gravity): 리지드바디에 중력 옵션을 적용하여, 중력에 따라 오브젝트가 떨어지는 동작을 구현할 수 있다.
    • 운동(Movement): 힘(Force)이나 속도(Velocity)를 사용하여 리지드바디의 운동을 제어할 수 있다.
    • 회전(Rotation): 토크(Torque)나 각속도(Angular Velocity)를 사용하여 리지드바디의 회전을 제어할 수 있다.
    • 충돌(Collision): 다른 오브젝트와의 충돌을 감지하고, 충돌한 결과에 따라 물리적 반응을 수행한다.
    • 트리거(Triggers): 리지드바디는 트리거(Collider)와 함께 사용하여 특정 이벤트를 감지하고, 이벤트 발생 시 특정 동작을 수행할 수 있다.
  • 리지드바디는 물리 엔진의 영향을 받기 전에 게임 오브젝트에 명시적으로 추가해야한다. 메뉴의 Components->Physics->Rigidbody 에서 선택한 오브젝트에 리지드바디를 추가할 수 있다. 중력의 영향을 받고 스크립팅을 통해 힘을 받을 수 있지만 원하는 대로 정확하게 동작시키려면 Collider 나 Joint를 추가해야 한다.

Kinematic

  • Kinematic(키네매틱)은 물리 시뮬레이션에서 오브젝트의 움직임을 제어하는 방법 중 하나이다. 유니티(Unity)에서는 리지드바디(Rigidbody)를 사용하여 오브젝트를 물리 시뮬레이션에 참여시킬 수 있지만, 때로는 리지드바디를 사용하지 않고 키네매틱을 적용하여 오브젝트의 움직임을 직접 제어하기도 한다. 키네매틱 오브젝트는 물리 시뮬레이션에 영향을 주지 않고, 프로그래머가 움직임을 직접 제어할 수 있는 오브젝트를 말한다. 이는 주로 플레이어 캐릭터, NPC, 애니메이션과 상호작용하는 오브젝트 등에 사용된다. 키네매틱 오브젝트는 물리 엔진에 의해 힘과 운동이 자동으로 계산되지 않으므로, 개발자가 직접 위치, 회전, 스케일 등을 조작하여 원하는 동작을 구현할 수 있다.키네매틱 오브젝트의 특징은 다음과 같다.
    • 물리 시뮬레이션 무시: 키네매틱 오브젝트는 물리 시뮬레이션과 충돌을 무시한다. 다른 리지드바디와 충돌하더라도 영향을 받지 않으며, 물리 시스템에 의해 움직이지 않는다.
    • 개발자 제어: 개발자가 직접 키네매틱 오브젝트의 움직임을 코드로 제어한다. 이를 통해 다양한 동작과 상호작용을 구현할 수 있다.
    • 충돌 감지: 키네매틱 오브젝트는 물리 시뮬레이션에 참여하지 않지만, 충돌 감지를 위해 충돌체(Collider)를 사용할 수 있다. 이를 통해 다른 오브젝트와의 충돌을 감지하여 원하는 동작을 수행할 수 있다.
  • 주의사항으로 키네매틱 오브젝트는 개발자가 직접 제어하므로, 오브젝트 간의 물리적 상호작용이 필요한 경우에는 Dynamic 리지드바디를 사용하는 것이 더 적합한다. 특히, 물리 시뮬레이션을 사용해야 하는 물리적 반응이 필요한 경우에는 리지드바디를 선택하는 것이 바람직하다. 키네매틱 오브젝트는 주로 애니메이션 기반 움직임이나 상호작용을 위해 사용되며, 물리 시뮬레이션보다 더 세밀하게 움직임을 제어할 수 있는 장점이 있다.

Collider

  • 콜라이더 컴포넌트는 물리적 충돌을 위해 게임 오브젝트의 모양을 정의한다. 보이지 않는 콜라이더는 게임 오브젝트의 메시와 완전히 똑같을 필요는 없다. 메시의 대략적인 근사치로도 효율적일 때가 많으며, 게임플레이에서 구별하기 어렵다. 3D에서는 박스 콜라이더, 스피어 콜라이더, 캡슐 콜라이더가 기본적인 타입으로, 2D에서는 박스 콜라이더 2D와 써클 콜라이더 2D를 기본적인 타입으로 제공한다. 복합 콜라이더를 만들기 위해 이러한 콜라이더를 단일 게임 오브젝트에 원하는 만큼 추가할 수 있다.

트리거(Trigger)

  • 스크립팅 시스템은 충돌이 일어나는 시점을 감지하고 OnCollisionEnter 함수를 사용하여 액션이 초기화할 수 있다. 또한, 단순히 하나의 콜라이더가 충돌을 일으키지 않고 다른 콜라이더의 공간에 들어가는 것을 물리 엔진이 감지하도록 할 수도 있다. 콜라이더를 트리거(Trigger)(Is Trigger 프로퍼티 사용)로 설정하면 이 콜라이더는 솔리드 오브젝트로 동작하지 않으며 그저 다른 콜라이더가 통과하도록 허용한다. 다른 콜라이더가 이 콜라이더의 공간에 들어오면, 트리거는 트리거 오브젝트의 스크립트에 있는 OnTriggerEnter 함수를 호출한다.

19 오성혁

참고

세부적인 내용은 아래 블로그를 참고 바란다.