渲染2D数组Libgdx Java

时间:2014-08-19 11:16:10

标签: java arrays libgdx

我想为我的游戏创建一个随机的平铺地图,这是我到目前为止所做的:

switch(MathUtils.random(2)){

        case 0:
            tileX+=16;
            loadedTiles ++;
            //game.batch.draw(tile1, tileX, tileY);
            System.out.print("tile1");
            currentTile = tile1;
            break;
        case 1:
            tileX+=16;
            loadedTiles ++;
            //game.batch.draw(tile2, tileX, tileY);
            System.out.print("tile2");
            currentTile = tile2;
            break;
        case 2:
            tileX+=16;
            loadedTiles ++;
            //game.batch.draw(tile3, tileX, tileY);
            System.out.print("tile3");
            currentTile = tile3;
            break;
            }

        game.batch.begin();
        game.batch.draw(currentTile, tileX, tileY);
        game.batch.end();
        }

不是单独渲染它们,而是想将它们添加到数组中并进行渲染 他们都在一起,所以如果我有一个像这样的数组:

ArrayList<Texture> tiles;

然后在所有案例选项中添加一些内容,例如:

tiles.add(tile1);

问题:

如何渲染数组并获得相关的坐标以便渲染它们,这是否会添加到数组中?

2 个答案:

答案 0 :(得分:0)

这将使用一个批处理器,来自这些行

   game.batch.begin();
   game.batch.draw(currentTile, tileX, tileY);
   game.batch.end();

您似乎已经在使用一个。将开始位置放在绘制切片的循环之前,将结束放置到循环结束的位置。

答案 1 :(得分:0)

我解决了类似的问题:

batch.begin();
for (Ground ground : groundArray){
    batch.draw(ground.getTextureRegion(), ground.x, ground.y);
}
batch.end();

有关详细信息,请查看HERE

如果您有任何问题,我将很乐意更新我的回答,只需在评论中发帖。

你去了:

public class Ground {
public float x;
float y;
private TextureRegion texture;
private Rectangle bounds;

public Ground(float x, float y){
    texture = Assets.atlas.findRegion("ground");
    this.x = x;
    this.y = y;
    bounds = new Rectangle(x, y, 100, 498);
}

public TextureRegion getTextureRegion(){
    return texture;
}

public Rectangle getBounds(){
    return bounds;
}
}

如果您想了解Asstes.atlas.findRegions,请查看HERE