RigidBody

조성원·2025년 5월 16일

-Rigidbody 가이드-

https://docs.unity3d.com/kr/2018.4/Manual/class-Rigidbody.html

게임 오브젝트의 동작을 물리 엔전으로 제어할 수 있게 해주는 컴포넌트.

Transform과 달리 힘과 토크를 받을 수 있으며 Transform과 Rigidbody를 동시에 사용하면 연산에 오류가 발생할 수 있다.

Rigidbody를 포함한 물리 연산을 이용할 때는 최종적으로 FixedUpdat에서 실행하도록 하는 것이 좋다.

ForceMode

Rigidbody 컴포넌트를 사용할 때 ForceMode를 사용하여 다양한 힘 적용 방식을 설정할 수 있다.

Force

Rigidbody.AddForce(Vector3 force, ForceMode.Force)

force 벡터의 크기에 비례해서 지속적으로 힘을 적용한다.
힘을 "지속적으로" 적용하여 가속도가 생긴다.
Vector3 force * 10f 형식도 가능

Acceleration

Rigidbody.AddForce(Vector3 force, ForceMode.Acceleration)

오브젝트 질량에 관계 없이 같은 크기의 가속도를 적용한다.

Force, Acceleration, velocity

Force는 질량의 영향을 받는다. 가벼운 건 빨리 움직이고 무거운 건 느리게 움직인다.

F = m * a
힘 = 질량 * 가속도

a = F/m을 통해서 질량에 따른 가속도가 생긴다.

현실감 있지만 조작이 불안정하다.


Acceleration은 질량의 영향을 받지 않고 똑같은 속도를 받는다.

a = F를 통해서 질량의 영향을 받지 않는 가속도가 생긴다.

비현실적이지만 조작이 안정적이다.

velocity는 현재 Rigidbody의 이동 벡터(크기,방향)를 나타낸다. 변수를 대입하면 이동시킬 수도 있다.

Impulse

Rigidbody.AddForce(Vector3 force, ForceMode.Impulse)

순간적인 힘을 적용한다.

VelocityChange

Rigidbody.AddForce(Vector3 force, ForceMode.VelocityChange)

물체의 현재 속도를 변경하면서 움직인다.
단순히 벡터 값을 덮어씌워서 변경시키는 직접 제어와 다른 점은 물리 힘이나 충돌로 변화하는 상태에서 물리 엔진의 연속성을 유지하며 물리 상태를 유지하기 위해서 사용한다는 것이다.

profile
direction *= -1;

0개의 댓글