web-dev-qa-db-ja.com

LIBGDXでカーソル位置を取得する

Libgdxでカーソル位置を取得してスプライトに適用するにはどうすればよいですか?このような? enter image description here

カーソルが画面のどこにある場合でも、スプライトの方向を指定したいのですが、libgdxの例を検索しましたが、それに関連する例が見つかりません。

16
CodeAndWave

カーソル位置を取得

入力をポーリングする場合は、Gdx.input.getX()およびGdx.input.getY()を使用して、現在のマウスのx座標とy座標を取得します。 (ドキュメントにはタッチにのみ関連すると書かれていますが、コード ボタンの状態に関係なく生のマウス値を報告しているように見えます

InputProcessorを使用している場合は、次のいずれかを使用できます。

ボタンを押さずにマウスから入力イベントを受信します。

スプライトに位置を適用します

現在のスプライト位置からカーソル位置を指す _Vector2_ を更新します。これは、スプライトの見出しにすることができます。このベクトルに一致するように、スプライトの見出しを回転させる必要があります。

Vector2.angle() を使用してこのベクトルの角度を計算し、スプライトの回転をこれに設定します。 (これは正のX軸を基準にしているため、Y軸を基準にして定数を追加する必要がある場合があります。)

18
P.T.

私は通常、次のようにマウスを世界座標に追跡します。

    // variables
    private final Vector2 mouseInWorld2D = new Vector2();
    private final Vector3 mouseInWorld3D = new Vector3();
    private final OrthographicCamera cam; 
    .
    .
    .
    //in render() code
    mouseInWorld3D.x = Gdx.input.getX();
    mouseInWorld3D.y = Gdx.input.getY();
    mouseInWorld3D.z = 0;
    cam.unproject(mouseInWorld3D);
    mouseInWorld2D.x = mouseInWorld3D.x;
    mouseInWorld2D.y = mouseInWorld3D.y;

次に、mouseInWorld2Dを使用して、ゲーム内の(シーン/ワールドに対する)マウス座標にアクセスできます。スプライトはその座標を非常に簡単に追跡し、その角度と方向を計算できます。

3
francogp