2017-06-10 20 views
1

私は自分でそれを行う方法がわからないような問題に遭遇しましたが、私はあなたの助けを借りてより理解することができます。Java、Level Editor Issue

私は作成しているゲームエンジン用のレベルエディタを作成しました。タイルが正しく配置され、それぞれが重ならないようにマウスの位置を32x32(グリッド)または64x64(グリッド)に合わせようとしています。その他。

その本を好きではないようにするため

http://imgur.com/Sa3bh0H が、より多くのこのような:本当に悪い説明のための http://imgur.com/a/nck9N 申し訳ありません。

私が使用しているマウスの位置コードが

public int getMouseX() { 
    return mouseX; // Get MouseX 
} 


public int getMouseY() { 
    return mouseY; // Get Mouse Y 
} 

public void mouseMoved(MouseEvent e) { 
    mouseX = (int)(e.getX()/gc.getScale() /*+ gc.getWindow().getFrame().get*/); 
    mouseY = (int)(e.getY()/gc.getScale()); //CODE TO GET MOUSE X AND Y 


} 

//マウスが

tMouseX = gc.getInput().getMouseX() -32; 
tMouseY = gc.getInput().getMouseY() - 32; 
putImage((int)tMouseX,(int)tMouseY,r); 

// putImage機能

public void putImage(int x, int y) 
{ 
    objects.add(new Grass(x,y)); 

} 

あるテクスチャ/画像をロードするコードです画像を32x32にスナップしようとしています

+0

達成したいスナップ用のコードを記述しましたか? – luk2302

+0

あなたは明確な質問を忘れてしまった。あなたはどんな問題を抱えていますか?何が壊れていますか? –

+0

いくつかの画像と@ luk2302を追加しました。このスナップをコーディングする方法はわかりません。 – NightX

答えて

0

グリッドにマウスをスナップする心配はありませんが、実際にはそうしたくありません。あなたがしたいのは、タイルをグリッドにスナップすることです。

これを行う最も良い方法は、整数除算を使用することです。整数を使用してタイルサイズで除算し、残りを切り捨て(またはfloorを使用)、タイルサイズを乗算してスケールバックします。

int tilepos_x = (int)(mousex/tileSize) * tileSize; 
int tilepos_y = (int)(mousey/tileSize) * tileSize; 
+0

タイルを中央に配置する必要がある場合は、配置するときに(x、y)からタイルサイズ/ 2を引くだけです。 –