Java,关卡编辑器问题



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

我已经为我正在创建的游戏引擎创建了一个关卡编辑器,我正在尝试使鼠标位置对齐到 32x32(网格(或 64x64(网格(,以便瓷砖正确放置并且不会相互重叠。

所以它不是这样的:https://i.stack.imgur.com/uL60U.jpg但更像这样: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

不要担心将鼠标捕捉到网格上,您真的不想这样做。 您想要的是将磁贴对齐到网格。

最好的方法是使用整数除法。 使用整数除以磁贴大小以截断余数(或使用 floor(,然后通过乘以磁贴大小向上缩放。

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

最新更新