根据指数和纹理大小给出位置,我如何计算我的六边形位置?

时间:2013-03-30 15:18:33

标签: c# xna

我正在尝试创建一个六角形地图,如下所示:

http://files.slembcke.net/misc/procedural/hex_tiles.png

但是我的功能将列表中的tile X(行)和Y(列)索引转换为屏幕位置时遇到了一些问题:

        public static Vector2 GetDisplayCoordOfTile(GameTile t, Texture2D texture)
        {
            Vector2 screenPadding = new Vector2(2, 2);

            float ypos = (t.Column * (texture.Height + 2)) - (t.Row * texture.Height / (float)2) + screenPadding.Y;
            float xpos = (t.Row * (texture.Width)) + screenPadding.X;

            return new Vector2(xpos, ypos);
        }

有人知道事情发生了什么事情,我不能让我的想法包围这个想法,因为坐标系在常规数组中的思维差异

1 个答案:

答案 0 :(得分:0)

这里有一个关于如何绘制六边形地图的精彩教程: http://www.xnaresources.com/default.asp?page=Tutorial:TileEngineSeries:3

此外,您可以在此处获得更多有关问题的问题:https://gamedev.stackexchange.com/