2013-07-10 89 views
-1

我试图创建一个等轴测图编辑器,我碰到这个问题迷迷糊糊时,我产生的地图:轴测图绘制

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

我生成的地图看起来像有一些瓦片屏幕外的(A)方案。我必须更改我的代码以获得(B)式地图?

这是我用来在我的地图中创建单元格的代码。 (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,0,因此它将子图序列拖到左侧,因此它们很快就会从屏幕上消失。

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

int isox = (Width/2) - (tileLength/2) + x - y;