0

メインクラスのレンダリングで翻訳しています。翻訳に基づいてマウスの位置を取得するにはどうすればよいですか?

public void render(GameContainer gc, Graphics g) 
        throws SlickException 
{
    float centerX = 800/2;
    float centerY = 600/2;
    g.translate(centerX, centerY);
    g.translate(-player.playerX, -player.playerY);
    gen.render(g);
    player.render(g);
}

playerX = 800 /2 - sprite.getWidth();
playerY = 600 /2 - sprite.getHeight();

キーダウン時のプレーヤーの位置を.2f*deltaで更新します

説明に役立つ画像

i92.photobucket.com/albums/l22/occ31191/Untitled-4.png

4

2 に答える 2

2

ワールド座標 = カメラ位置 + マウス位置

カメラの位置は、この質問に対する私の回答で計算/説明されています: Slick2D and JBox2D. 描き方

于 2012-04-11T12:05:02.087 に答える
1

あなたはタイルベースのゲームを作っています。そこでは、各タイルが同じサイズであるように見えます。この場合、一般化された非投影は必要ありません。

完全な地図を想像してみてください。ビューポートにはその一部のみが表示されます。(x,y)ビューポートのオッフェを完全なマップに保存する必要がある場所。マウスの座標はビューポートを基準にしているため、このオフセットをマウスの座標に追加する必要があります。これで、タイルの幅と高さでシフトされたマウス座標に対してモジュロ演算を使用して、タイル座標を簡単に取得できます。

事実上、これはウィンドウ座標からタイル座標への座標変換です。

于 2012-04-11T11:43:10.807 に答える