Java,关卡编辑器问题

时间:2017-06-10 15:26:48

标签: java game-engine tiles-game

我遇到了一个快速的问题,我不知道该如何自己做,但我确信在你的帮助下我会理解更多。

我为我正在创建的游戏引擎创建了一个关卡编辑器,我正在尝试将鼠标位置对齐到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

1 个答案:

答案 0 :(得分:0)

不要担心将鼠标对准网格,你真的不想这样做。你想要的是将 tile 捕捉到网格。

执行此操作的最佳方法是使用整数除法。使用整数除以切片大小以截断余数(或使用floor),然后通过乘以切片大小进行缩放。

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