我想渲染一个平铺的贴图,每次游戏运行时都会生成随机贴图。渲染瓷砖Java Libgdx
我有一个应该保存所有的瓷砖值,然后再以随机改变的数组:
int[][] map = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
};
for (int x = 0; x < map.length; x++) {
for (int y = 0; y < map[x].length; y++) {
if(map[x][y] == 0){
switch(MathUtils.random(2)){
case 0:
map[x][y] = 0;
break;
case 1:
map[x][y] = 1;
break;
case 2:
map[x][y] = 2;
break;
}
}
}
}
然后我按照使其什么砖是:
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0f, 0f, 0f, 1f);
game.batch.begin();
for (int x = 0; x < map.length; x++) {
for (int y = 0; y < map[y].length; y++) {
if(map[x][y] == 1){
game.batch.draw(stone, x*120, y*120);
}
if(map[x][y] == 2){
game.batch.draw(grass, x*120, y*120);
}
if(map[x][y] == 0){
game.batch.draw(dirt, x*120, y*120);
}
}
}
问题:
- 所呈现的所有瓷砖为二RT。
- 它确实减慢了一切。
不应该这是'映射[X]。长度;''中为(INT Y = 0; Y <映射[Y]。长度; Y ++)''中的方法render'? – 2014-08-31 09:58:42
@ S1LENTWARRIOR是的,这是有道理的,但我只是改变了它,它反应了错误:线程“LWJGL应用程序”中的异常java.lang.ArrayIndexOutOfBoundsException:9 – user3165683 2014-08-31 10:02:37
在您的初始'地图中放入一些'1'和'2' '。这将确定您的随机展示位置或绘图代码中是否存在错误。 (一目了然,它应该*。*我的工作。另外,请检查您的图像加载代码。也许你不加载正确的图像。) – usr2564301 2014-08-31 10:29:23