[Unity] Jump는 Addforce or Velocity?

마법의 민교·2024년 3월 23일
0

Unity

목록 보기
1/1
post-thumbnail

JUMP

게임을 개발하며 점프를 구현해야하는 상황은 반드시 오게될것이다.점프가 있는 정상적인 상황이라면 그래서 대부분 점프를 Addforce 아니면 Velocity로 구현할 것인데 난 처음에는 Addforce로 구현하였다. 대충 코드를 보자

rigidbody.AddForce(Vector2.up * _jumpPower, ForceMode.Impulse);

이렇게 점프를 구현해 봤다. 하지만 점프를 테스트 할 수록 치명적인 오류를 보았다. 바로 연속으로 점프를 할때마다 중간중간 원래 점프보다 높게 뛰거나 낮게 뛰는 것을 발견하였다. 문제의 원인은 AddForce 이 친구 자체에 있었는데

AddForce는 말 그대로 물체에게 힘을 주는 것이다. 그러면 뭐 별문제가 될 수 있나? 라고 생각 할 수 있는데 Unity에서 Rigidbody 컴포넌트는 질량과 관성이 존재한다.
AddForce는 힘을 가해 속도를 누적시킨다. 그러면 관성의 영향을 받게 된다. 그러므로 점프를 할때 관성의 영향 때문에 불균형한 점프가 되는 것이다.
이 문제를 해결하려면 질량과 관성의 영향을 받지 않는 Rigidbody의 Velocity인 속도를 이용하면 될 것이다. 코드를 보자

rigidbody.velocity = new Vector3(_rigidbody.velocity.x,_jumpPower, _rigidbody.velocity.z);

Velocity는 속도로 벡터이다. 그러므로 벡터를 넘겨줘야 하며 점프를 할때 움직임이 제한 되지 않도록 0이 아닌 현재 나의 속도를 넣어줬다. 이러면 점프 불균형이 없어지게 될 것이다.


추가 공부

아래 링크를 걸어두었으니 Unity Rigidbody와 Addforce, Velocity를 더 잘 알고 싶으면 Unity API를 보는 것을 추천한다.

Unity Rigidbody

profile
I'm "possible"

0개의 댓글