내일배움캠프_Unity_6기/TIL(Today I Learend)
TIL : 2024-10-28(월) :: RigidBody.velocity 및 RigidBody.AddForce를 이용한 물리계산시 Time.deltaTime 및 Time.FixeddeltaTime을 연산하지 않는것이 좋다.
BirdHead
2024. 10. 28. 21:57
오늘 객체의 이동 및 점프를 RigidBody.velocity와 RigidBody.AddForce 메서드를 사용하여 구현 하였다.
void FixedUpdate()
{
Move();
}
public void Move()
{
moveDirection = curMoveInput.y * transform.forward + curMoveInput.x * transform.right;
moveDirection *= status.CurSpeed;
moveDirection.y = rigid.velocity.y;
rigid.velocity = moveDirection * Time.FixeddeltaTime;
}
이런식으로 구현을 하였다 하지만, 캐릭터의 이동 자체가 엄청 느린것이다. Speed 값을 100~200 단위는 올려야 좀 자연스럽고 , 점프도 내려올때 중력이 잘 적용되지만 아무리 무게값을 올려도 천천히 내려오는 현상이 반복됬다.
구글링 해본 결과
즉, RigidBody.velocity와 RigidBody.AddForce 는 내부적으로 이미 프레임간 시간 차이(deltaTime)를 적용하여 연산 처리 되어있기 때문에 한번더 곱해지면 값이 2번 보정되어 엄청 느려지는것이다.