由9代表
由7代表
由8代表
由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);
}
}
}
}
}
为什么我的观点看起来像这样,我该如何解决?
答案 0 :(得分:1)
您检查了cocos2d-x吗?你已经有了这些东西。
答案 1 :(得分:0)
这简直太容易了。只需将其视为2D开销游戏,但需要稍后绘制屏幕底部的内容,以便它们出现在屏幕上方较高的位置。因此,例如,如果此屏幕截图顶部的面包车向前推进一点,那么前面的公共汽车需要在面包车后面绘制:
这样,公共汽车的顶部被拉到了面包车的前面,看起来公共汽车离摄像机很近,遮挡了它背后的东西。当然,必须绘制所有艺术品以匹配,但这不需要任何编程工作。当上述游戏中的汽车朝着不同的方向前进时,游戏就会为它绘制不同的艺术品。
当然,有些游戏实际上使用3D模型,并配有定位相机,以实现这种外观。
答案 2 :(得分:0)
您是否考虑过x和y通常在计算机图形中反转的事实。我记得当我使用XNA框架制作2d tile引擎时,我正在做一些工作。
基本上问题是函数调用先取x和y,所以它与你正在执行的数组查找不匹配。
您的地图数组是方形的,尝试将其设置为奇数并翻转绘制函数参数以查看会发生什么。