私はタンクイメージの上に銃の画像を持っています。私は銃がマウスの位置に向かって指しているようにして、マウスを使って目指すことができます。元の銃の画像は上を向いています。私はSlick2Dを使用していて、画像クラスには角度を取る回転機能があります。これをどうやってやりますか?画像を「ポイント」にマウスの位置に回転
2
A
答えて
7
入力オブジェクトを確認することで、ユーザーのマウスの位置を見つけることができます。これは、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);
0
このように行われる照準:
マウスにタンクからの方向は次のようである:
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
イベントで発生します。画像の回転
:"Graphics2D", "affine transform", "translation"
:
は、スタックオーバーフローまたはJavaドキュメントを見てください。おそらくあなたのエンジンはすでにいくつかのライブラリ関数を提供しています。
希望に役立ちます。
0
y軸は試して減少しているので...上記の回答に
を構築するには:
float deltaX = mouse.x - tank.x;
float deltaY = tank.y - mouse.y;
関連する問題
- 1. メニューホバーのマウスの位置に応じて画像を回転させる - ワードプレス
- 2. マウスの位置を使用して画像を回転する - Visual Studio 2015
- 3. マウス移動イベントで画像を回転
- 4. マウスの位置に関連して画像を回転するにはどうすればよいですか?
- 5. コンバJS。画像の位置を変更する、回転する
- 6. 画像の上にマウスを移動すると画像が回転する
- 7. JavaScriptを回転させて画像にマウスを移動
- 8. HTML5キャンバスで回転した矩形内のマウスの位置
- 9. ジョイント回転位置
- 10. 特定の位置、サイズ、回転を持つ画像を描画する
- 11. 画像回転()
- 12. 画面回転によるGridViewのスクロール位置の維持
- 13. 回転スプライトの位置
- 14. 回転イメージ(元の位置に戻す)
- 15. 画像の回転
- 16. 画像の回転
- 17. 画面に対してマウスの位置を保持し、コンポーネントの回転を無視する方法は?
- 18. 画像回転の位置合わせの問題を解決する
- 19. 画像を回転させずにバイキュービック補間で画像を回転する
- 20. 画像を移動するトラックのマウスの位置
- 21. オブジェクトを3Dポイントに回転
- 22. カメラをポイントに回転
- 23. Planetary.jsの位置に画像を配置
- 24. 画像のサイズを変更したり、モバイルデバイスを回転したりするときの画像の位置を
- 25. マウスの位置で画像を変更する
- 26. javascriptのマウス位置で画像を変更しますか?
- 27. 逆回転画像
- 28. ユニティトップダウン2dマウスに回転
- 29. マウスの位置の異なる軸でムービークリップを回転するAs3
- 30. 位置を変えずにY軸回りに回転する
おかげで、私は私のゲームにコードを入れて、それが一種の働いていました。銃は回転しますが、私の半分の速度でしかマウスを動かすことはできず、マウスを銃の反対側に動かすと、他の方向に回転し始めます。あなたは何が間違っているのか知っていますか? –
興味深い。これは本質的に私自身のゲームのコードスニペットなので、私はそれがうまく機能していると確信しています。 Math.atan2を使用していることを確認していますか? Math.atanには[pi/2、-pi/2]の範囲があるのに対して、Math.atan2には[pi、-pi]の範囲がありますので、私は尋ねます。 –
Tankクラスの更新関数のコードは次のとおりです。http: //pastebin.com/KsQUWdErこのクラスのインスタンスを宣言し、私のゲームプレイ状態の更新セクションでこのメソッドを呼び出します。 –