public void Update(float deltaTime) { if (spellCaster.IsCasting()) { return; } var pos = playerGmj.transform.position; Vector3 movementDirection = targetPos - playerGmj.transform.position; if (movementDirection.magnitude < minimumMovementDistance) { playerAnimator.Idle(); movementDirection = Vector3.zero; } else { playerAnimator.Walk(); } movementDirection.Normalize(); //THIS IS WHAT I CHANGED IF YOU GOT ERROR var proposedPosition = pos + pushBack * deltaTime + movementDirection * deltaTime; var finalPos = proposedPosition; playerGmj.transform.position = finalPos; pushBack = pushBack * (1 - deltaTime); }