我正在编写游戏程序。在这个游戏中,有一个物体需要旋转以面对另一个物体。
代码:
这是我所做的:
//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
关于java - 将对象角度动画化为目标角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162642/