0

所以我目前正在努力学习 slick。在遇到问题之前我做得很好。我一直试图找到一个好小时的答案,但找不到。所以我决定把它贴在这里。

我的问题:我在 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。

我的代码有什么问题?

任何帮助表示赞赏!

谢谢,凯尔

4

1 回答 1

0
OppAdj = Opp/Adj;

那就是问题所在。你应该做这个:

OppAdj = (double)(Opp)/Adj;

这样,它将为您double提供准确性。顺便一提:

TargetAngle =  Math.abs(Math.atan(Opp/Adj)*100);

应该:

TargetAngle =  Math.abs(Math.atan(OppAdj)*100);
于 2012-12-03T00:39:08.307 回答