将对象角度动画化为目标角度
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
我正在编写游戏程序。在这个游戏中,有一个物体需要旋转以面对另一个物体。
代码:
这是我所做的:
//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