私は、HTML5キャンバス上に平たい頂点の六角形のタイルのグリッドをレンダリングしています。配置とピッキングは完璧に動作します。常にグリッド全体を表示する必要があります。六角形の競技場のアスペクト比を計算する
このため、すべての六角形を完全に含む最小四角形を計算し、その高さと幅を使用してキャンバスサイズ(レターボックス)を計算します。
tile_width = 2 // 2 * distance center-corner
tile_height = 1.7320508075688772 // sqrt(3) * distance center-corner
horiz_dist = 1.5 // 3/4 * tile_width
width = 1/4 * tile_width + number_x_tiles * horiz_dist
height = 1/2 * tile_height + number_y_tiles * tile_h
aspect = width/height
しかし、表示タイルが歪んでいる、彼らは、x方向に延伸されていますサイズを計算するために私が選んで、タイルをレイアウトし、計算するために使用するのと同じ座標を使用します。私の処方に何か問題はありますか?測定値は、the fantastic redblob games resourceに記載されています。
私は、直交マップが正確に見えるように、アスペクト比に応じてxおよびyスケーリングを適用する関数がうまく動作することを確信しています。
tile_hの式は何ですか?推測すると、問題は、奇数と偶数のタイルを別々に扱う必要があることだと思います。私がそれを誤解していない限り、horiz_distは2タイルで1.5平均化されます。また、幅を1/4倍にし、高さを1/2の倍数にする理由を説明してください。 – samgak
こんにちはsamgak。 tile_hはtile_heightから切り捨てられました。申し訳ありませんが、それを見つけませんでした。最初の列がちょうど1タイル幅で、後続の各列が3/4幅を追加するため、1/4幅を追加します。高さについては、すべての偶数行が1幅を加算し、奇数列が偶数列と同じ高さであれば、奇数行は合計にもう半分の高さを加算します。あなたは私が提供したリンクの画像にそれを植え付けることができます。 – user3410194