【发布时间】:2016-07-14 17:32:23
【问题描述】:
好的,所以我正在尝试让事物与我拥有的网格对齐。
这就是我捕捉到屏幕本身的方式:
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);
}
}
gridSpace 是网格本身。 以下是目前的重点:
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);
对不起,我的解释能力很差,但这是我能做的最好的了。 我做错了什么?
【问题讨论】:
-
发布你的渲染方法