-1

私はゲームを作成していて、敵がプレイヤーに追随するように敵をプレイヤーに向けたいと思っています。私はこの方法で AffineTransform を使用しようとしました:

at = new AffineTransform();
angle = Math.atan2(player.getY() - y,player.getX() - x) + (Math.PI / 2);
at.setToTranslation(x, y);
at.rotate(angle, width / 2, height / 2);

次にg2D.drawImage(image,at,this);、敵を画面に描画するために使用します。問題は、敵が画面上のランダムな場所に面しているだけで、そのポイントに面するように回転しますが、私が望むようにプレイヤーに面していないことです. プレイヤークラスでまったく同じコードを使用して、プレイヤーをマウスカーソルに向けさせたところ、問題なく機能しましたが、プレイヤーに向けて機能しないのはなぜですか?

4

1 に答える 1

1

あなたのアプローチの問題の 1 つは、敵がすでに直面している角度 (彼のイメージ) を考慮していないことです。敵は同じ (x,y) にいる可能性がありますが、[0,360] のいずれかの角度を持っています。つまり、プレイヤーを考慮してローテーションする一方で、彼自身の向きを考慮してローテーションしないため、ローテーションはランダムに見えます。彼の画像がどの角度を向いているかを把握し、プレイヤーがどの角度を向いているかを調べ、それに対してプレイヤーを回転させる必要があります。

すべての敵/プレイヤーにフィールドを追加することをお勧めしますEnum facing(角度が少なく限られた場合)、またはint facingイメージが向いている角度を保持するフィールドを追加することをお勧めします。

于 2013-04-22T12:55:48.533 に答える