TIL_2025_03_06 RigidBody

김효중·2025년 3월 6일

Rigidbody.AddForce

public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);

Rigidbody.AddForce는 물체에 물리적인 변화를 줄 수 있습니다.
force는 힘의 방향과 크기를 전달하고 mode는 어떤 방식으로 전달될지를 결정한다.
mode는 Acceleration, Impulse, VelocityChange로 설정할 수 있다.
위 함수는 유니티 진행중에서 호출 될 수 있다.
FixedUpdate후에 호출 된 후 힘이 가해진다.

ForceMode.Force

m_Rigidbody.AddForce(transform.up * m_Thrust);

기본 값으로 단순히 force에 해당하는 힘을 더한다.
이때 force * Time.fixedDeltaTime / 질량으로 속도를 변경한다.
질량에 따라 효과가 변할 수 있다.

ForceMode.Acceleration

force를 m/s의 가속도로 취급하여 가속도를 적용한다.
이때 질량에 의존하지 않는다.
마찰이나 공기 저항과 같은 힘을 시뮬레이션할 때 사용한다.

ForceMode.Impulse

force를 순간적으로 힘을 가한다.
이때 질량에 의해 효과가 변할 수 있다.

ForceMode.VelocityChange

리지드바디에 즉각적으로 속도 변화를 적용한다.
Impulse와 달리 질량에 의존하지 않는다.
질량에 상관없이 우주선등에 사용할 때 유용하다.

결론

위 종류중에서 상활별로 적절한 옵션을 사용하여 구현해야한다.
운동의 순발성과 질량에 따른 변화를 적용할지 여부에 따라 선택한다.
급속적인 운동은 Impulse를 통해
질량이 필요없다면 VelocityChange를 통해 힘을 전달한다.

참고
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Rigidbody.AddForce.html

profile
도전하는 개발자

0개의 댓글