闪烁平铺地图Java Libgdx - 渲染平铺地图

时间:2014-08-29 11:25:13

标签: java arrays libgdx tiles

我有3个瓷砖,我正在尝试为瓷砖地图渲染它们。我的守则:公共无效

render(float delta) {

Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
game.batch.begin();
int w;
w = 120;

int h;
h = 1080/16;

int tileX = 0;
int tileY = 0;
Texture currentTile = null;
for(int i=0; i<w; i++){
    for(int j=0; j<h; j++){

        switch(MathUtils.random(2)){

        case 0:
            currentTile = grass;
            tiles.add(grass);
            break;
        case 1:
            currentTile = stone;
            break;
        case 2:
            currentTile = dirt;
            break;
            }
        game.batch.draw(currentTile, i*120, j*120);

    }
    }

问题是,除了瓷砖一直闪烁之外,它会变得很好 - 因为我认为它们不断被重新渲染。但是我怎么能阻止这是使用二维数组的唯一方法,如果是这样,请说明如何:

以这种格式渲染数组,而不是使用currentTile?:

game.batch.draw(currentTile, i*120, j*120);

设置数组,它应该是什么样的,这个?:

Texture[] tiles = new Texture[1];

如何正确添加切片并构造数组,任何其他细节都会有用。

2 个答案:

答案 0 :(得分:0)

根据我的经验,当您的画布区域没有任何内容时,会出现闪烁的屏幕。在开始尝试绘制图块之前,请创建/填充一些填充屏幕的颜色(黑色,蓝色等)。从这里绘制你的BG项目,瓷砖,玩家/实体等。

答案 1 :(得分:0)

在每个游戏循环中,您正在为拼贴设置一个新的随机纹理,这意味着在1秒内拼贴最多可以更改为每秒60次(fps)

要解决此问题,它会依赖于是否应该更改切片。

- 如果没有,请在构造函数中预定义它们

- 如果他们可以改变,设置一个定时事件和/或动作来触发它