将对象角度动画化为目标角度

Animating object angle to target angle

我正在编写游戏程序。在这个游戏中,有一个物体需要旋转以面对另一个物体。

代码:

这是我所做的:

//targetAngle is defined to be the angle pointing towards the other object
//angle is the angle of this object
angle += 0.05 * (targetAngle - angle);

问题:

这很有效,但物体经常以非常间接的方式旋转。例如,如果物体面向 3 点钟,而需要面向 5 点钟,则物体可能会逆时针方向移动,而不是更理想的顺时针方向。

我想让对象以最直接的方式旋转。关于如何做到这一点的任何想法?

感谢您的宝贵时间和意见。 如果您投反对票,请告诉我原因,以便我改进这个问题。

注意,我在这个程序中使用的是弧度。

我认为一种方式类似于...

dAngle = (targetAngle - angle) % two_pi; //Range of (-two_pi .. two_pi)
dAngle += (dAngle > pi? -two_pi : dAngle < -pi? two_pi : 0); //Range of [-pi .. pi]
angle += 0.05 * dAngle;

此外,如果您希望它始终面向玩家,但又不知道正确的角度,请查看... Rotate Texture in function of player position