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

时间:2017-12-20 10:05:45

标签: python trigonometry

我有2D游戏。每个玩家的位置(x,y)和标题(右边是0度,向上是90度等) 我需要一个方法,将Player1标题设置为Player2。我试图通过计算斜率来计算它 -

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

然而,每次都没有返回正确的结果。你能推荐我任何其他方法吗?

1 个答案:

答案 0 :(得分:1)

您遇到atan(slope)无法为所有方向提供正确值的事实。这是因为斜率不包括方向。 180°的转弯将使斜率保持不变。在数学上,这源于-y / -x = y / x。

这一事实

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

现在,这是在具有无灵感名称atan2()的函数中完成的。这将接收两个值(y和x)并完成查找范围(-180°,+ 180°)中的正确方向角所需的全部,以弧度为单位,因此它是范围(-pi,+ pi) ]