首页 文章

旋转玩家面对客观的Java浮油

提问于
浏览
0

所以我目前正在研究浮油 . 我一直很好,直到遇到问题 . 我一直试图找到一个好时光的答案而不能 . 所以我决定把它贴在这里 .

我的问题:我有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 .

我的代码出了什么问题?

任何帮助表示赞赏!

谢谢,凯尔

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);
    

相关问题