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

유니티 docs에 올라와있는 내용이다.
Rigidbody.AddForce를 사용하여 힘을 적용하는 방법에 대한 옵션이라고 나와있다.
본문에 나와있는 설명으로는 Force와 Impulse는 질량을 사용하여 힘을 적용하고,
Acceleration과 VelocityChanges는 질량을 무시하여 힘을 적용한다.
기본적인 사용법은 다음과 같다.
Rigidbody.AddForce(Vector3 힘의 크기, ForceMode.옵션);
아래에서 각 모드에 대해 다시 정리해보았다.
힘을 지속적으로 적용한다.
질량에 따라 필요한 힘이 달라진다.
무거운 물체를 옮기는 데 더 많은 힘이 필요한 현실적인 물리를 설정하는 데 유용하다.
Rigidbody.AddForce(Vector3 force, ForceMode.Force);
안해보면 모르니까 한번 해봤다.
힘은 같은 힘으로 적용했다.


확실히 질량이 컸을때는 더 큰 힘을 필요로 하는 것 같다.
현실에서 돌 굴리는 느낌이 들었다.
가속도를 적용한다.
질량 차이에 관계없이 가속도를 일정하게 유지한다.
객체의 가속도를 직접 제어하려는 경우에 유용하다.
Rigidbody.AddForce(Vector3 force, ForceMode.Acceleration);

mass를 바꿔가며 해봤는데 상관 없이 일정한 가속도를 가지고 이동하였다.
일정한 가속도를 가지기 때문에 원하는 속도로 제어하기 좋을 것 같다.
순간적인 힘을 적용한다.
질량에 따라 필요한 힘이 달라진다.
폭발이나 충돌로 인한 힘과 같이 즉시 발생하는 힘을 가하는 데 유용하다.
Rigidbody.AddForce(Vector3 force, ForceMode.Impulse);


점프에 많이 사용되는 녀석이다.
강의에서도 점프를 구현할 때 사용했다.
뭔가 한번에 힘을 펑! 주는 느낌이였다.
물론 무거워지니까 뭐 거의 꿈쩍도 안한다ㅋㅋ
순간적인 변화하는 속도를 적용한다.
질량 차이에 관계없이 일정한 속도 변화를 제공한다.
질량 차이를 고려하지 않고 제어하려는 경우에 유용하다.
Rigidbody.AddForce(Vector3 force, ForceMode.VelocityChange);

거의 순식간에 지나가버렸다 ㅋㅋㅋ
확실히 순간적인 힘을 적용해주다 보니 Acceleration 보다 폭발적인 속도가 나온 것 같다.
mass를 변경해도 똑같았다.
글로만 봤을때는 뭔 소리인지 잘 이해가 안됐는데, 정리하면서 한번 해보니까
각 옵션들의 차이점을 확실히 알 수 있었다.
각자 필요로 하는 부분이 다르기 때문에 알맞은 곳에 잘 써야겠다.