我已經爲一個標準的「方形」六角形地圖做了基本的數學運算,但是我想將它轉換爲一個六角形地圖,一個看起來像六角形的六角形。對於JavaScript不過,我不確定如何做到這一點使用我已經建立的代碼 - 這是我到目前爲止有:如何設置使用Javascript和六角形瓷磚的六角形地圖?
function CreateHexGrid()
{
for (x = 0; x < mapWidth; x++)
{
tileArray[x] = [];
for (y = 0; y < mapWidth; y++)
{
var hex = new hexTile(game, 0, 0);
var point = calculateGrid(x,y);
hex.x = point.x;
hex.y = point.y;
gameContainer.add(hex);
hex.tileColor = returnRandomHex();
hex.switchSprite(hex.tileColor);
tileArray[x][y] = hex;
}
}
}
function calculateGrid(x, y)
{
var point = new PIXI.Point(x,y);
var offset = 0;
if (point.y % 2 != 0)
{
offset = 90/2;
}
var x = offset + point.x * 95;
var y = point.y * 100 * 0.75;
point.x = x;
point.y = y;
return point;
}
這是我的最終目標:
我試圖從最初在RedBlobGames上找到的明顯的C/++ /#例子轉換代碼,但是一旦我實際上獲得了座標後,它給了我一個非常奇怪的矩形梯形形狀:
for (int q = -map_radius; q <= map_radius; q++) {
int r1 = max(-map_radius, -q - map_radius);
int r2 = min(map_radius, -q + map_radius);
for (int r = r1; r <= r2; r++) {
map.insert(Hex(q, r, -q-r));
}
}
我寧願這樣做,而不必告訴它在想要的形狀之外不繪製各種偏移部分 - 在繪製事實之後我會考慮一個「編輯」的地圖。
這是我的RBG和StackExchange到目前爲止提供的JavaScript下面的例子轉換後的版本:
for (q = 0; q < mapRadius; q++)
{
for (r = 0; r < mapRadius; r++)
{
var point = calculateGrid(-q-r, r);
var hex = new hexTile(game, point.x, point.y);
gameContainer.add(hex);
}
}
當我按照提供的六角地圖的例子,這是我得到的結果是:
我該怎麼做才能解決這個問題?
你會發現這個有用:http://www.redblobgames.com/grids/hexagons/ –
其實這正是我一直在努力遵循和使用在JS中。奇怪的是,下面的一些代碼示例產生了錯誤的形狀。 – Merlin
刪除if(point.y%2!= 0) {offset} = 90/2; },並使用我的轉換。 – Adder