我有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];
如何正确添加切片并构造数组,任何其他细节都会有用。
答案 0 :(得分:0)
根据我的经验,当您的画布区域没有任何内容时,会出现闪烁的屏幕。在开始尝试绘制图块之前,请创建/填充一些填充屏幕的颜色(黑色,蓝色等)。从这里绘制你的BG项目,瓷砖,玩家/实体等。
答案 1 :(得分:0)
在每个游戏循环中,您正在为拼贴设置一个新的随机纹理,这意味着在1秒内拼贴最多可以更改为每秒60次(fps)
要解决此问题,它会依赖于是否应该更改切片。
- 如果没有,请在构造函数中预定义它们
- 如果他们可以改变,设置一个定时事件和/或动作来触发它