等距地图绘图

时间:2013-07-10 15:18:42

标签: c# xna drawing isometric

我尝试创建等距地图编辑器,当我生成地图时,我偶然发现了这个问题:

http://postimg.org/image/atsqgu5on/

我生成的地图看起来像(A)方案,屏幕外有一些瓷砖。我必须在代码中更改以获得(B)-ish映射?

这是我用来在地图中创建单元格的代码。 (32是瓷砖高度和宽度)

for (int i = 0; i <this.Height; i++)
        {
            Map[i] = new Rectangle[Width];
            miniMap[i] = new Rectangle[Width];

            for (int j = 0; j < this.Width; j++)
            {
                int x = 32 * j;
                int y = 32 * i;
                int isoX = x - y;
                int isoY = (x + y) / 2;

                Map[i][j] = new Rectangle(isoX,isoY, 64, 64);

            }

不知怎的,我知道问题在于:int isoX = x - y;但我不知道要改变什么才能得到我想要的结果。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这里的问题似乎是你的系统从顶部到右角开始构建多行瓷砖,然后工作到左下角。由于第一个图块的初始坐标是0,0,当它向左侧绘制子序列行时,它们很快就会从屏幕上消失。

对此最简单的解决方案就是右移x坐标,使其开始从区域中间绘制顶部瓷砖,同时记住我们希望瓷砖的中心位于区域的中心,而不是它的左上边缘。像

这样的东西
int isox = (Width / 2) - (tileLength / 2) + x - y;