2

戦車の画像の上に銃の画像があります。マウスを使って照準を合わせることができるように、銃をマウスの位置に向けてください。元の銃の画像は上向きになります。私はSlick2Dを使用していますが、その画像クラスには角度をとる回転関数があります。どうすればこれを行うことができますか?

4

3 に答える 3

8

Inputオブジェクトを尋ねることで、ユーザーのマウスの位置を見つけることができます。これは、GameContainerに入力を求めることによって行われます。

Input userInput = gameContainer.getInput();
float mouseX = userInput.getMouseX();
float mouseY = userInput.getMouseY();

マウスと銃の位置を使用して、銃が向いている必要のある角度を決定できます。銃とマウスの間に線を引き、この線の角度を見つけることを想像できます。この角度は、マウスを「指す」ために銃が向いている必要がある角度です。

Vector2f gunLocation = gun.getLocation();
float xDistance = mouseX - gunLocation.x;
float yDistance = mouseY - gunLocation.y;
double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
gunImage.setRotation((float)angleToTurn);
于 2012-05-05T13:15:39.950 に答える
1

照準は次のように行われます。

タンクからマウスへの方向は次のようになります。

float deltaX = mouse.x - tank.x;
float deltaY = mouse.y - tank.y;

// The resulting direction
return (int) (360 + Math.toDegrees(Math.atan2(deltaY, deltaX))) % 360;

イベントなどで、戦車の方向を現在のマウス位置に更新するだけmouseMovedです。

画像の回転:

スタック オーバーフローまたは Java doc: をご覧ください"Graphics2D", "affine transform", "translation"。おそらく、あなたのエンジンはすでにいくつかのライブラリ関数を提供しています。

それが役立つことを願っています。

于 2012-05-05T13:03:32.273 に答える