android RPG游戏等轴视图

时间:2011-03-13 23:05:31

标签: android

 9由9代表

7由7代表

8由8代表

6由6代表

2d数组-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

3 个答案:

答案 0 :(得分:1)

您检查了cocos2d-x吗?你已经有了这些东西。

答案 1 :(得分:0)

这简直太容易了。只需将其视为2D开销游戏,但需要稍后绘制屏幕底部的内容,以便它们出现在屏幕上方较高的位置。因此,例如,如果此屏幕截图顶部的面包车向前推进一点,那么前面的公共汽车需要在面包车后面绘制:

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

这样,公共汽车的顶部被拉到了面包车的前面,看起来公共汽车离摄像机很近,遮挡了它背后的东西。当然,必须绘制所有艺术品以匹配,但这不需要任何编程工作。当上述游戏中的汽车朝着不同的方向前进时,游戏就会为它绘制不同的艺术品。

当然,有些游戏实际上使用3D模型,并配有定位相机,以实现这种外观。

答案 2 :(得分:0)

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

基本上问题是函数调用先取x和y,所以它与你正在执行的数组查找不匹配。

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