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

标签 java point angle animated

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

代码:

这是我所做的:

//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/

相关文章:

java - 如何以编程方式定义 Java 枚举?

java - 数组中的最小值一直打印 0? Java(但 .txt 文件中没有零作为数字)

java - 无法在 spring-test 5.0.3 中测试 MockMvc 异步 REST 服务上的 HTTP 状态(适用于 5.0.0)

android - 如何获得Android中两点之间的距离?

python - 如何知道两个向量之间的角度?

java - Android studio 删除了我的mapsactivity.java 如何恢复?

math - 计算对角线的垂直偏移

c++ - C++ 中的非刚体 2D 物理引擎

java - 求圆心与圆心的夹角

algorithm - 如何确定一个点的旋转角度