所以我正在学习浮油。我一直很好,直到遇到问题。我一直试图找到一个好时光的答案而不能。所以我决定将它发布在这里。
我的问题:我有800 X 800网格上的播放器。我试图让玩家以直线移动到网格上的某个点。现在我可以让他继续前进X然后转向Y,但我想让他尽可能快地到达那里。所以我想我是否可以从以下几点做出一个直角三角形(玩家位置,目标位置,以及X,Y截距,请看我的图像)。
My code:
Adj = (int) (TargetX-x); // Get The size of the Adjacent leg.
Opp = (int) (TargetY-y); // Get the size of the Opposite leg.
OppAdj = Opp/Adj; //Inverse tan is Opposite/Adjacent
TargetAngle = Math.abs(Math.atan(Opp/Adj)*100); //Keep the angle positive, and use inverse tan to get the missing angle.
现在我认为这样做可以解决缺失的角度,这样我就可以将玩家旋转一定数量,这样玩家就可以直线移动并击中目标。
这最终做的是给我一个73度的目标角度,变量OppAdj最终为1.0。
我的代码出了什么问题?
感谢任何帮助!
谢谢, 凯尔
答案 0 :(得分:0)
OppAdj = Opp/Adj;
这就是问题所在。你应该这样做:
OppAdj = (double)(Opp)/Adj;
这样,它会为您提供double
的准确性。顺便说一下:
TargetAngle = Math.abs(Math.atan(Opp/Adj)*100);
应该是:
TargetAngle = Math.abs(Math.atan(OppAdj)*100);