2011-03-13 127 views
3

 9由9机器人RPG游戏等距视图

7表示通过由6

2D阵列表示8

6表示7

8表示的-1是空的区域,并0草满

这是代码我正在使用渲染视图

//map class 
     private int[][] terrain = new int[20][20]; 
     } 


     //constructor 
     protected Drawable[] tiles = new Drawable[10]; 

     tiles[GameMap.GRASS] = getResources().getDrawable(R.drawable.grass); 
     tiles[GameMap.GRASS_WU] = getResources().getDrawable(R.drawable.grass_wu); 
     tiles[GameMap.GRASS_WD] = getResources().getDrawable(R.drawable.grass_wd); 
     tiles[GameMap.GRASS_EU] = getResources().getDrawable(R.drawable.grass_eu); 
     tiles[GameMap.GRASS_ED] = getResources().getDrawable(R.drawable.grass_ed); 

      protected void onDraw(Canvas canvas) { 
     //move_Unit(); 

     for (int x=0;x<map.getWidthInTiles();x++) { 
      for (int y=0;y<map.getHeightInTiles();y++) { 

       if(map.getTerrain(x,y) != -1){ 

       tiles[map.getTerrain(x,y)].setBounds(x*16,y*16,(x*16) + 16,(y*16) + 16); 


       if (map.getUnit(x,y) != 0) { 
        tiles[map.getUnit(x,y)].setBounds(x*16,y*16,(x*16) + 16,(y*16) + 16); 
       } 
       tiles[map.getTerrain(x, y)].draw(canvas); 
       tiles[map.getUnit(x, y)].draw(canvas); 
       } 
      } 
     } 

     } 

    } 

为什么我的视图显示为像这样以及如何修复它? enter image description here

回答

1

你有没有选择cocos2d-x?你已经有了这些东西。

+0

是的,我做了简单的但我放弃它,因为它专注于iPhone,但你的链接似乎也涵盖了Android。让我仔细看看谢谢! – kimlexson 2011-03-13 23:17:57

+0

'cocos2d-x'是'cocos2d-iphone'的一个C++端口:) – Macarse 2011-03-13 23:22:11

+0

http://www.raywenderlich.com/1163/how-to-make-a-tile-based-game-with-cocos2d – kimlexson 2011-03-14 00:12:06

0

这非常容易。只是将它视为2D开销游戏,但屏幕底部的东西需要稍后绘制,以便它们出现在屏幕上更高的位置。因此,举例来说,如果在这个截图的顶部面包车是推动前进一点点,公交车就在它前面所需要的面包车后,可以得出:

http://nanek.name/images/autotrafego_rain.jpg

这样的顶部公共汽车被拉过面包车的前方,看起来公交车更靠近摄像头,遮挡了后面的东西。当然,这些作品都必须进行匹配,但这并不需要任何编程工作。当上述游戏中的一辆汽车朝着不同的方向发展时,游戏只是为它绘制了一个不同的包装艺术品。

当然,有些游戏实际上使用3D模型和定位相机来实现此外观。

+0

相结合,它比称为“Zig-zag”或“钻石”方法:此链接提供代码示例http:// stackoverflow .com/questions/892811/drawing-isometric-game-worlds – kimlexson 2011-03-14 06:22:51

+0

是的,我绝对在找什么。我将使用2d数组实现它,当我有一个工作模型时,我将继续将它与地图编辑器集成 – kimlexson 2011-03-14 06:31:00

0

您是否考虑过x和y通常在计算机图形学中颠倒的事实。我记得当我用XNA框架制作了一个2d的tile引擎时,我做了一些工作。

基本上问题是,函数调用需要先x和y,因此它不匹配你正在执行的数组查找。

您的地图数组是正方形的,请尝试将其设置为奇数大小并翻转绘图函数参数以查看会发生什么。