C# 攻击/跟随我的球员

C# 攻击/跟随我的球员,c#,trigonometry,C#,Trigonometry,我想创建一个游戏,在这个游戏中,你试图避免物体(圆圈)攻击你。我这样做的方式: 首先计算对象和我之间的x_和y差(在这个代码中,AI_x是对象的x位置(AI_y:y位置),x,y是玩家的位置) 计算对象必须形成的角度,以便直接朝向播放器(使用Math.Atan(x轴之间的差值/y轴之间的差值)) -然后,我使用这些角度来计算每个刻度必须移动的x和y距离(例如distancePerTick_x=Math.Cos(角度)*速度) 但是,当我的distanceToPlayer_x(请参见代码)为正

我想创建一个游戏,在这个游戏中,你试图避免物体(圆圈)攻击你。我这样做的方式:

  • 首先计算对象和我之间的x_和y差(在这个代码中,AI_x是对象的x位置(AI_y:y位置),x,y是玩家的位置)
  • 计算对象必须形成的角度,以便直接朝向播放器(使用Math.Atan(x轴之间的差值/y轴之间的差值)) -然后,我使用这些角度来计算每个刻度必须移动的x和y距离(例如distancePerTick_x=Math.Cos(角度)*速度)
但是,当我的distanceToPlayer_x(请参见代码)为正值或distanceToPlayer_x和distanceToPlayer_y均为负值时,该选项不起作用,因此偏差的数字再次变为正值

我知道为什么会发生这种情况,但我已经尝试了两个小时来解决它,但再也无法忍受疼痛了:p

我希望你们能帮助我

代码:

当计算整个范围
[0..2*pi]
角度时,典型的解决方案包括
Atan2
方法:

 angle = Math.Atan2(distanceToPlayer_y, distanceToPlayer_x);

有关详细信息

angle=Math.Atan2(距离顶层,距离顶层),请注意
Atan2
你说的数学是什么意思。Atan2?你能把它写成一个anwser吗?因为它对我有用,谢谢!当然,下一步是使用正弦定律“引导”自己到达目标,而不是追赶他们。这可能会让你的比赛变得太难,所以要小心。
 angle = Math.Atan2(distanceToPlayer_y, distanceToPlayer_x);