我在转弯时使用Quaternion.Slerp
来旋转汽车。我注意到在向左转弯之前,汽车会稍微向右转,然后再向左转弯。我还将汽车从一个位置拉到另一个位置。知道为什么会发生这种情况以及如何阻止它吗?
car.transform.position = Vector3.Lerp(car.transform.position, nextPosition, fracJourney);
if (direction != Vector3.zero)
{
Quaternion lookRotation = Quaternion.LookRotation(direction);
car.transform.rotation = Quaternion.Slerp(car.transform.rotation, lookRotation, Time.deltaTime * rotationSpeed);
}
答案 0 :(得分:0)
Quaternion.Slerp
使用插值和最短路径。大角度时效果不佳。并且在确切的180度范围内实际上是未定义的。围绕该角度,您会在帧与帧之间得到一些“生涩”的东西。
两个选项:
Tween您的动画。也就是说,有效地以较小的角度向上旋转,直到达到最终角度为止。想想关键帧或将旋转旋转分成较小的块。
或者您也可以在欧拉角空间中进行插值。然后在插值后使用Quaternion.Euler
。