【发布时间】:2016-01-19 08:32:21
【问题描述】:
我正在尝试用六边形图块绘制地图。但是,我正在努力让瓷砖正确排列,所以它们之间没有空间。 一张是我通常使用的图块,一张放大了另一张图块,以确保它不仅仅是抗锯齿对我的玩弄。
这是负责获取每个图块的像素坐标的代码。显然每个奇数行的偏移量都有一些错误计算,但简单地添加或减去一个像素只会增加间隙。
private static final float HEX_WIDTH = 97; // 139 for colored tiles
private static final float HEX_HEIGHT = (float) (Math.sqrt(3)/2 * HEX_WIDTH);
public Vector2 getHexCoordinates(Hexagon hex) {
float x = (float) HEX_WIDTH * hex.getGridX() * 3 / 4;
float y = (float) HEX_HEIGHT * (hex.getGridX() / 2 + hex.getGridY());
y = (hex.getGridX() % 2 == 0) ? y : y + HEX_HEIGHT / 2;
return new Vector2(x, y);
}
另外here's the tiles我正在使用以防有人想知道。
【问题讨论】:
-
我注意到 y 不会不断增加(随着 gridx/y 增加)。这是一个非常小的偏差,但根据您的地板/四舍五入的方式,它可能会产生间隙。
-
没有地板/四舍五入。十六进制精灵无需任何进一步的数学运算即可获得坐标,并且绘图功能也使用浮点数。此外,间隙的宽度不会以任何明显的方式增加。从我所看到的检查坐标来看,它们也经常出现。
-
您是否尝试四舍五入到小数点后 1 位或 2 位?这至少应该给你恒定的间距。
-
实际上,四舍五入会产生不一致的间距,因为一旦达到阈值,就会有更多的像素添加/减去偏移量。
标签: java libgdx hexagonal-tiles