有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java快照到网格

好吧,所以我试着让事物与我的网格对齐

这就是我抓拍屏幕本身的方式:

int finalCalcX = (mouseX / Handler.gridSpace32) * Handler.gridSpace32;
int finalCalcY = (mouseY / Handler.gridSpace32) * Handler.gridSpace32;

我认为变量名本身就说明了问题。 鼠标坐标除以我的分幅为32x32像素,再乘以该值,即可获得网格捕捉功能

现在,这在屏幕上运行良好,但当我想将其添加到“地图”本身时,我不能只将我的地图x和y偏移量添加到其中,它会变得一团糟

我已经玩了大约两天了,我还让它捕捉到了地图本身,但当我说,在地图的两个轴的一半,mouseX和mouseY把网格的东西搞砸了。 这对我来说有点难以解释,但从0,0(每个原点位置,甚至屏幕)的偏移量加上远离原点时的贴图偏移量,会被添加到光标本身和我用来测试的透明捕捉到网格平铺之间的距离。 基本上,贴图原点和相机之间的偏移量出于某种原因与光标和透明平铺之间的偏移量相同。所以我移动到地图中的距离越远,瓷砖离光标越远,最终移动到屏幕宽度和高度之外。。。 当我进一步进入地图时,我希望捕捉到网格的功能保持正确,无论我在地图上的什么位置

渲染方法:

for (int y = startY; y < endY; y++) {
    for (int x = startX; x < endX; x++) {
        gridSpace(graphics, (int) (x * Handler.gridSpace32 - handler.getCamera().getOffsetX()),
                    (int) (y * Handler.gridSpace32 - handler.getCamera().getOffsetY()));

        checkHighlight(graphics);
    }
}

网格空间就是网格本身。 以下是目前的亮点:

int finalCalcX = (mouseX / Handler.gridSpace32) * Handler.gridSpace32;
int finalCalcY = (mouseY / Handler.gridSpace32) * Handler.gridSpace32;

graphics.setColor(new Color(100, 200, 100, 3));
graphics.fillRect(finalCalcX, finalCalcY, Handler.gridSpace32, Handler.gridSpace32);

对不起,我的解释能力太差了,但这是我能做的最好的了。 我做错了什么


共 (0) 个答案