[Unity] Rigidbody

PIAZZI·2024년 5월 31일
0

Unity

목록 보기
9/9
post-thumbnail

Rigidbody

  • 게임 오브젝트를 물리 제어로 동작하도록 해주는 컴포넌트
  • Rigidbody는 힘과 토크를 받아 오브젝트를 보다 사실적으로 움직이게 한다.

속성

Mass - 질량

  • 오브젝트의 질량이며, 기본 기준은 Kg이다.
  • 질량에 따라 충돌 시 물리 결과가 달라진다.
  • 질량이 무겁다고 해서 더 빨리 떨어지지는 않는다. 이 점은 아래의 Drag를 통해 설정할 수 있다.

Drag - 공기 저항

  • 물체가 움직일 때 받는 공기 저항이다.
  • 0에 가까울 수록 공기 저항이 없으며, 무한대로 갈 수록 받는 공기 저항이 증가한다.
  • Drag 값을 높이면 공기 저항을 많이 받기 때문에, 오브젝트가 오히려 깃털처럼 천천히 떨어진다.
  • Drag 값이 낮을 수록 무거워 보이고, 높을 수록 가벼워 보인다.

Angular Drag - 회전 저항

  • 회전할때 받는 저항이다.
  • 값이 높을 수록 회전할 때 많은 저항을 받아, 회전에 오랜 시간이 걸린다.
  • Angular Drag의 값을 무한대로 설정하는 것만으로는, 오브젝트의 회전 자체를 멈출 수는 없다.

Use Gravity - 중력 적용 여부

  • 말 그대로 중력 적용 여부를 뜻한다.
  • 체크하면 중력 적용을 받고, 해제하면 중력 적용을 받지 않아서 공중에 그대로 떠있다.
  • 기본 중력가속도는 구현되어있고, 기본 값은 -9.81이다.
  • 기본 중력가속도를 바꾸고 싶으면 Edit > Project Settings > Physics 에서 Gravity 값을 손보면 된다.

Is Kinematic - 외부 물리 충돌 무시 여부

  • 이를 체크하면 해당 오브젝트는 물리 엔진으로 제어되지 않는다. (외부의 물리적 충돌로 인한 힘을 받지 않음)
  • 오직 코드에 의해서만 움직일 수 있다.
  • 물리 엔진으로 제어되지 않기 때문에 오직 transform으로만 움직여야 한다.

Interpolate - 물리 연산 방식

  • 리지드바디의 움직임이 어색할 경우 사용하는 기능이다.
    • None - 보간이 적용되지 않는다.
    • Interpolate - 이전 프레임의 트랜스폼에 맞게 움직임을 부드럽게 처리한다.
    • Extrapolate - 다음 프레임의 트랜스폼을 추정해 움직임을 부드럽게 처리한다.

Collision Detection - 충돌 체크 방식

  • 터널링 현상이 발생한다면 이 기능을 사용한다.

    터널링 현상 - 오브젝트가 너무 빨리 움직여서 충돌 감지 전에 이미 다른 오브젝트를 통과하는 현상

    • Discrete - 불연속

      • 기본값이며 CPU 연산이 가장 적다.

      • 씬에서 모든 다른 콜라이더에 대해 불연속 충돌 검사를 사용한다.

      • 터널링 현상이 일어날 수 있다.

    • Continuous - 연속

      • Discrete 보다 CPU 연산이 조금 더 많다.

      • 직접 빠르게 움직이는 개체에서 터널링을 방지한다.

      • 동적 콜라이더에 불연속 충돌 검사, 정적 콜라이더에 스위핑 기반 연속 충돌 검사를 사용한다.

    • Continuous Dynamic - 연속 동적

      • 가장 많은 CPU연산을 필요로 한다.

      • Continuous와 비슷하지만, 동적 콜라이더에도 연속 충돌 검사를 사용한다.

    • Continuous Speculative

      • 2018.3에 도입된 비교적 최근 옵션이며, Continuous Dynamic와 유사한 수준의 정확도지만 CPU연산은 더 적다.

      • 리지드바디와 콜라이더에 추측성 연속 충돌 검사를 사용한다.

불연속 충돌 검사

  • 일정 시간마다 충돌을 확인한다.
  • 기본 충돌 검사 설정이다.
  • 시간 간격이 크거나, 오브젝트가 매우 빨리 움직이면 충돌을 감지 못할 수도 있다.

연속 충돌 검사

  • 보간으로 충돌을 확인한다.
  • 불연속 충돌 검사보다 CPU 비용이 크다.

Constraints - Position, Rotation 고정 여부

  • Freeze Position - 해당 위치 고정
  • Freeze Rotation - 해당 회전 고정

Layer Overrides - 레이어로 인한 충돌 여부

  • Include Layers - 설정한 레이어로 된 콜라이더와 충돌 체크가 되도록 한다.
  • Exclude Layers - 설정한 레이어로 된 콜라이더와의 접촉은 무시한다.

개인적인 공부를 위해 정리한 내용이며, 틀린 점이 있을 수 있습니다.
만일 틀린 내용이 있다면, 댓글로 알려주시면 감사하겠습니다.

profile
범부에오

0개의 댓글