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 に答える