2016-01-19 65 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

相關問題