2016-01-19 30 views
2

我正在试图绘制六角形瓷砖的地图。不过,我正在努力让瓷砖正确排列,所以它们之间没有空间。 Here's a picture of my problem.其中一块是我通常使用的瓷砖,另一块是用另一块瓷砖放大,以确保它不仅仅是抗锯齿技巧。六角形瓷砖没有正确排列,在它们之间的空隙

这是负责获取每个图块的像素坐标的代码。显然,每个奇数行的偏移量都有一些错误计算,但仅仅增加或减少一个像素只会增加间隙。

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我使用的情况下,任何人都想知道。

+0

我注意到** y **不会不断增加(如gridx/y增加)。这是一个非常小的偏差,但取决于你如何完成地板/倒圆,它可能会造成差距。 – Terje

+0

没有地板/四舍五入。这些十六进制精灵在没有进一步数学运算的情况下被赋予坐标,绘图功能也使用浮点数。此外,间隙的宽度不会以明显的增加。从我所看到的检查坐标他们也出现重复出现。 – Askr

+0

您是否尝试舍入到1或2位小数?至少应该给你恒定的间距。 – Terje

回答

0

通过1.01f缩放单个Sprites减少了足够大的空隙来解决这个问题。

0

您是否尝试过简单地将HEX_WIDTH减1?

private static final float HEX_WIDTH = 96; 

你的身高显然很好,因为你没有横向差距。

+0

这只会导致单个六角形瓷砖变小,[间隙仍然存在](http://i.imgur.com/ESFdsjF.png)。 – Askr

相关问题