六边形网格的相机

本文关键字:相机 网格 六边形 | 更新日期: 2023-09-27 18:32:22

我正在尝试制作一个游戏。它将采用 4x 游戏风格。我有一个六边形的网格。我想用它作为棋盘,玩地图,每个六边形都是一个位置。

六边形可以有单位,行星或什么都没有。但是我遇到的问题是如何制作一个可以在地图上滚动的相机。我从来没有做过这样的事情,我找不到任何东西。大多数事情都指向XNA。

我希望有人能大行告诉我原理,或者给我推荐一些带有指南或解释的链接。

六边形网格的相机

通常,如果您有一个只想绘制一部分的网格,我会通过将偏移量存储到网格中来实现相机,并在该偏移处开始绘制。如果要一次滚动 1 个磁贴,可以存储磁贴偏移量,这很容易。如果要滚动到单个像素位置,请存储像素偏移量,并计算需要从中绘制的第一个磁贴。

for(int y = yPixelOffset / tileHeight; y < displayHeight; y++) {
    for(int x = xPixelOffset / tileWidth; x < displayWidth; x++) {
        // draw tile[x,y] at (displayLeft + x * tileWidth - xPixelOffset,
        //    displayTop + y * tileHeight - yPixelOffset)
    }
}

我通常不处理六边形网格,但我认为这只涉及将每第二行偏移半个瓷砖宽度。