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 등 물리적 힘을 적용해도 움직이지 않는다.