ゲームでプレイヤーの動きに問題があります。このゲームは、W、A、S、D でプレイヤーの位置を制御するトップダウン シューティング ゲームです。マウスを動かすことで、プレイヤーの向きを制御したいと考えています。
マウスを追跡するには mouseMoved メソッドを使用する必要があることはわかっていますが、角度の計算と実際の画像の回転の両方で迷っています。
画像は基本的に、銃が突き出ていることを表すために黒い線が入った円です。
どんな助けでも大歓迎です!
プレーヤーとマウスの座標を使用して角度を計算できます。
float angle = (float)(Math.atan2(player.y - mouse.y, player.x - mouse.x));
これにより、ラジアンで角度が得られます。
次に、オブジェクトを描画しているとき:
AffineTransform reset = new AffineTransform();
reset.rotate(0, 0, 0);
Graphics2D g2 = (Graphics2D)g;
g2.rotate(angle, player.x, player.y);
//draw the image here
g2.setTransform(reset);