標準的な "正方形"の六角形マップについて基本的な計算を行っていますが、これを六角形のマップから六角形の六角形の形に変換したいと思います。Javascriptと16進タイルを使用して六角形のマップを設定するにはどうすればよいですか?
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;
}
は、これが私の最終目標である:
ここで私がこれまで持っているものだ - JavaScriptがしかし、私は私がすでに構築されたコードを使用してこれを行う方法がわかりませんよ
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));
}
}
:私は実際に座標を得た後、私は当初、
RedBlobGamesで見つけ見かけC/++ /#の例からコードを変換しようとしてきた、しかし、それは私に非常に奇妙な長方形の台形形状を与えました210
希望の形の外にあるさまざまなオフセットセクションを '描画しない'ように言わなくても、私はむしろこれを行うでしょう。
これは、これまで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