Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 六边形瓷砖排列不当,中间有缝隙_Java_Libgdx_Hexagonal Tiles - Fatal编程技术网

Java 六边形瓷砖排列不当,中间有缝隙

Java 六边形瓷砖排列不当,中间有缝隙,java,libgdx,hexagonal-tiles,Java,Libgdx,Hexagonal Tiles,我想画一张六边形的地图。然而,我正在努力使瓷砖正确排列,因此它们之间没有空间。一个是我通常使用的瓷砖,另一个是放大另一个瓷砖,以确保这不仅仅是抗锯齿在捉弄我 这是负责获取每个磁贴的像素坐标的代码。显然,对每一奇数行的偏移量都有一些计算错误,但简单地加上或减去一个像素只会增加间距 private static final float HEX_WIDTH = 97; // 139 for colored tiles private static final float HEX_HEIGHT = (f

我想画一张六边形的地图。然而,我正在努力使瓷砖正确排列,因此它们之间没有空间。一个是我通常使用的瓷砖,另一个是放大另一个瓷砖,以确保这不仅仅是抗锯齿在捉弄我

这是负责获取每个磁贴的像素坐标的代码。显然,对每一奇数行的偏移量都有一些计算错误,但简单地加上或减去一个像素只会增加间距

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);
}

此外,我正在使用以防有人怀疑。

您是否尝试过简单地将十六进制宽度减少1

private static final float HEX_WIDTH = 96;

<>你的高度很好,因为你没有水平的间隙。

< P>将单个精灵缩放1.01F,缩小了足够的间隙,以解决这个问题。

这只会导致个别的六角瓦片变小,我注意到Y并没有持续增加(因为GRIDX/Y增加)。这是一个非常小的偏差,但取决于铺地板/成圆的方式,可能会产生间隙。没有铺地板/成圆。十六进制精灵不需要任何进一步的数学运算就可以得到坐标,绘图函数也使用浮点数。此外,间隙的宽度不会以任何明显的方式增加。从我看到的坐标检查结果来看,它们也是重复出现的。你有没有尝试过四舍五入到1或2位小数?实际上,四舍五入会产生不一致的间距,因为一旦达到阈值,偏移量就会增加/减少更多像素。