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

问题描述 投票:0回答:1

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

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

但是每次都没有返回正确的结果。你会推荐我任何其他方法吗?

python trigonometry
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.