TIL 25.03.04 - Rigidbody ForceMode

강진규·2025년 3월 4일

Today I Learned

목록 보기
24/34
post-thumbnail

오늘부터는 Unity3D를 주제로 강의를 들었는데,
평소 자주 사용하던 Rigidbody의 컴포넌트 중 ForceMode라는 것을 알게 되었다.
이전에는 잘 모르고 그냥 따라 치는 수준이여서 한번 정리 해보기로 했다.


[ ForceMode ]

유니티 docs에 올라와있는 내용이다.

Rigidbody.AddForce를 사용하여 힘을 적용하는 방법에 대한 옵션이라고 나와있다.

  • Force : 강체의 질량을 사용하여 연속적인 힘을 추가
  • Acceleration : 강체의 질량을 무시하고 연속 가속도를 추가
  • Impulse : 강체의 질량을 사용하여 즉각적인 힘 충격을 추가
  • VelocityChange : 강체의 질량을 무시하고 즉각적인 속도 변화를 추가

본문에 나와있는 설명으로는 Force와 Impulse는 질량을 사용하여 힘을 적용하고,
Acceleration과 VelocityChanges는 질량을 무시하여 힘을 적용한다.

기본적인 사용법은 다음과 같다.

Rigidbody.AddForce(Vector3 힘의 크기, ForceMode.옵션);

아래에서 각 모드에 대해 다시 정리해보았다.


[ Force ]

힘을 지속적으로 적용한다.
질량에 따라 필요한 힘이 달라진다.
무거운 물체를 옮기는 데 더 많은 힘이 필요한 현실적인 물리를 설정하는 데 유용하다.

Rigidbody.AddForce(Vector3 force, ForceMode.Force);

안해보면 모르니까 한번 해봤다.
힘은 같은 힘으로 적용했다.

확실히 질량이 컸을때는 더 큰 힘을 필요로 하는 것 같다.
현실에서 돌 굴리는 느낌이 들었다.

[ Acceleration ]

가속도를 적용한다.
질량 차이에 관계없이 가속도를 일정하게 유지한다.
객체의 가속도를 직접 제어하려는 경우에 유용하다.

Rigidbody.AddForce(Vector3 force, ForceMode.Acceleration);

mass를 바꿔가며 해봤는데 상관 없이 일정한 가속도를 가지고 이동하였다.
일정한 가속도를 가지기 때문에 원하는 속도로 제어하기 좋을 것 같다.

[ Impulse ]

순간적인 힘을 적용한다.
질량에 따라 필요한 힘이 달라진다.
폭발이나 충돌로 인한 힘과 같이 즉시 발생하는 힘을 가하는 데 유용하다.

Rigidbody.AddForce(Vector3 force, ForceMode.Impulse);

점프에 많이 사용되는 녀석이다.
강의에서도 점프를 구현할 때 사용했다.
뭔가 한번에 힘을 펑! 주는 느낌이였다.

물론 무거워지니까 뭐 거의 꿈쩍도 안한다ㅋㅋ

[ VelocityChange ]

순간적인 변화하는 속도를 적용한다.
질량 차이에 관계없이 일정한 속도 변화를 제공한다.
질량 차이를 고려하지 않고 제어하려는 경우에 유용하다.

Rigidbody.AddForce(Vector3 force, ForceMode.VelocityChange);

거의 순식간에 지나가버렸다 ㅋㅋㅋ

확실히 순간적인 힘을 적용해주다 보니 Acceleration 보다 폭발적인 속도가 나온 것 같다.
mass를 변경해도 똑같았다.


글로만 봤을때는 뭔 소리인지 잘 이해가 안됐는데, 정리하면서 한번 해보니까
각 옵션들의 차이점을 확실히 알 수 있었다.

각자 필요로 하는 부분이 다르기 때문에 알맞은 곳에 잘 써야겠다.

0개의 댓글