我目前正在尝试制作一个涉及随机生成的世界的游戏。我目前有一个正常工作的启动画面和一个正常工作的Perlin噪声源。我所需要的只是一种实现代码以显示图像的方法。
代码:
public void show() {
batch = new SpriteBatch();
World world = new World();
int type = 0;
for (int y = 1; y < world.getlengthy();y++){
for (int x = 1; x < world.getlengthx();x++){
type = world.getvalue(x, y);
switch (type) {
case 1:sprite = new Sprite(tex1,0,0,16,16);sprite.setPosition(x, y);batch.begin();sprite.draw(batch);batch.end();
Gdx.app.log("", "x: " + x + " y: " + y);
break;
case 2:batch.begin();batch.draw(tex2, x, y);batch.end();
break;
case 3:batch.begin();batch.draw(tex3, x, y);batch.end();
break;
case 4:batch.begin();batch.draw(tex4, x, y);batch.end();
break;
case 5:batch.begin();batch.draw(tex5, x, y);batch.end();
break;
case 6:batch.begin();batch.draw(tex6, x, y);batch.end();
break;
case 7:batch.begin();batch.draw(tex7, x, y);batch.end();
break;
case 8:batch.begin();batch.draw(tex8, x, y);batch.end();
break;
}
}
您的代码需要在render
方法内部。如果屏幕是第一次显示,则仅调用该显示。(1次调用!)因此,将for循环放入渲染循环中,它应该可以工作。
只是一个小提示。不要在渲染周期内创建对象sprite = new Sprite(tex1,0,0,16,16);
。始终在show方法中或在构造函数内部初始化所有对象以节省渲染时间。(这确实使帧速率有很大不同)
begin()
在循环之前和循环end()
之后也只有一次。
例如这样的事情。我仍然不会在渲染器内部创建Sprites,但是我不知道其余的逻辑。希望这可以帮助!问候
@Override
public void show() {
batch = new SpriteBatch();
World world = new World();
}
@Override
public void render(float delta){
int type = 0;
batch.begin();
for (int y = 1; y < world.getlengthy();y++){
for (int x = 1; x < world.getlengthx();x++){
type = world.getvalue(x, y);
switch (type) {
case 1:
sprite = new Sprite(tex1,0,0,16,16);
sprite.setPosition(x, y);
sprite.draw(batch);
Gdx.app.log("", "x: " + x + " y: " + y);
break;
case 2:
batch.draw(tex2, x, y);
break;
case 3:
batch.draw(tex3, x, y);
break;
case 4:
batch.draw(tex4, x, y);
break;
case 5:
batch.draw(tex5, x, y);
break;
case 6:
batch.draw(tex6, x, y);
break;
case 7:
batch.draw(tex7, x, y);
break;
case 8:
batch.draw(tex8, x, y);
break;
}
}
batch.end();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句