我正在试图绘制六角形瓷砖的地图。不过,我正在努力让瓷砖正确排列,所以它们之间没有空间。 其中一块是我通常使用的瓷砖,另一块是用另一块瓷砖放大,以确保它不仅仅是抗锯齿技巧。六角形瓷砖没有正确排列,在它们之间的空隙
这是负责获取每个图块的像素坐标的代码。显然,每个奇数行的偏移量都有一些错误计算,但仅仅增加或减少一个像素只会增加间隙。
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增加)。这是一个非常小的偏差,但取决于你如何完成地板/倒圆,它可能会造成差距。 – Terje
没有地板/四舍五入。这些十六进制精灵在没有进一步数学运算的情况下被赋予坐标,绘图功能也使用浮点数。此外,间隙的宽度不会以明显的增加。从我所看到的检查坐标他们也出现重复出现。 – Askr
您是否尝试舍入到1或2位小数?至少应该给你恒定的间距。 – Terje