[Unity] Rigidbody 정리

Lumos Velog·2025년 7월 2일
0

Rigidbody?

Rigidbody는 Unity에서 물리 기반 움직임을 구현하기 위해 사용되는 컴포넌트이다. Rigidbody를 오브젝트에 추가하면 중력, 힘, 토크 등 다양한 물리 효과를 적용할 수 있다. 이를 통해 현실감 있는 움직임과 상호작용을 구현할 수 있다.
물리적인 움직임의 구현을 반드시 Rigidbody 를 통해서 해야 하는것은 아니지만 꽤 많은 상황에서 가장 간편한 선택지이다.




주요 속성

  • Mass
    오브젝트의 질량을 설정한다. 질량이 클수록 더 큰 힘이 필요하다.

  • Drag
    이동 시 받는 저항 값을 의미한다. 값이 높을수록 이동 속도가 빠르게 줄어든다.

  • Angular Drag
    회전 시 받는 저항 값을 의미한다. 값이 높을수록 회전 속도가 빠르게 줄어든다.

  • Use Gravity
    체크 시 중력이 적용된다. 해제 시 중력의 영향을 받지 않는다.

  • Is Kinematic
    체크 시 물리 엔진의 영향을 받지 않는다. Transform을 직접 제어할 때 사용한다.

  • Interpolate
    위치 보간(Interpolation) 방법을 설정한다. 부드러운 움직임이 필요할 때 사용한다.

  • Collision Detection
    충돌 감지 방식을 설정한다. 빠른 오브젝트는 Continuous로 설정하는 것이 좋다.




주요 메서드

public class RigidbodyExample : MonoBehaviour
{
    public Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();

        rb.AddForce(Vector3.up * 5f, ForceMode.Impulse);
        rb.AddTorque(1, ForceMode.Impulse);
        rb.MovePosition(Vector3.up);
        rb.MoveRotation(Quaternion.identity)
    }
}
  • AddForce
    (Vector3 force, ForceMode mode = ForceMode.Force)
    오브젝트에 힘을 가한다. ForceMode에 따라 힘의 적용 방식이 달라진다.

  • AddTorque
    (Vector3 torque, ForceMode mode = ForceMode.Force)
    오브젝트에 토크(회전력)를 가한다.

  • MovePosition
    (Vector3 position)
    Rigidbody의 위치를 강제로 이동시킨다.

  • MoveRotation
    (Quaternion rot)
    Rigidbody의 회전을 강제로 변경한다.




주의사항

  • Transform.position을 직접 변경하면 물리 엔진과 충돌이 발생할 수 있다.
    이런 경우, 움직임은 반드시 Rigidbody의 메서드를 통해 처리하는 것이 좋다.

  • 반드시 Collider 컴포넌트가 함께 필요하다. Collider가 없으면 충돌이 발생하지 않는다.

  • Kinematic 상태일 경우, AddForce 등 물리적 힘을 적용해도 움직이지 않는다.

0개의 댓글