2D 游戏,将玩家 1 变为玩家 2

2D game, turn Player 1 to Player 2

我有一款 2D 游戏。每个玩家都有自己的位置(x,y)和航向(右边是 0deg,向上是 90deg 等) 我需要一种方法来设置 Player1 朝向 Player2。我试图通过计算斜率来计算它 -

slope = (player2.y - player1.y)/(player2.x - player1.x)
heading = degrees(atan(slope))

然而,它并不是每次都return 正确结果。你能推荐我任何其他方法吗?

您正在为 atan(slope) 无法为所有方向提供正确值这一事实而苦恼。这是因为坡度不包括方向。旋转 180° 将使坡度保持不变。从数学上讲,这源于 -y/-x = y/x.

您不是第一个发现这一点的人。这种情况的传统解决方案总是仔细查看 x 和 y 值的符号,然后决定 atan() 的结果应位于哪个象限。

如今,这是在具有平庸名称 atan2() 的函数中完成的。这会接收两个值(y 和 x),并执行在范围 (-180°, +180°] 内找出正确方向角所需的所有操作,以弧度表示,因此它是范围 (-pi, +pi ].