我正在编写游戏编程。在这个游戏中,有一个物体需要旋转才能面对另一个物体。
这就是我所做的:
//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点钟,物体可能会逆时针方向行进而不是更顺时针方向。
我想让对象以最直接的方式旋转。关于如何做到这一点的任何想法?
感谢您的时间和意见。 如果您投票否决,请告诉我为什么我可以改进这个问题。
注意,我在这个程序中使用弧度。
答案 0 :(得分:1)
我认为一种方式就像......
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