Libgdx在没有TiledMap的情况下创建快速地图
我正在尝试制作像Minecraft(2D)的游戏。 我不想使用TiledMap, 因为它不能(如何找到一种方式)生成随机地图。Libgdx在没有TiledMap的情况下创建快速地图
我的测试&代码:
public class game implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Sprite block[] = new Sprite[26];
private int createdBlocks = 0;
private int line = 0;
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(w, h);
batch = new SpriteBatch();
camera.position.x = 480;
camera.position.y = 320;
camera.update();
graphics.create();
player.create();
}
@Override
public void dispose() {
batch.dispose();
}
@Override
public void render() {
for(int i=0; i<=25;i++){
block[i] = new Sprite(graphics.stone);
if(i==5 || i==10 || i==15 || i==20)
line++;
int i2 = i;
if(i > 5)
i = 0;
block[i].setPosition(i2 * 32, line * 32);
}
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
player.render(batch);
for(int i=0; i<=100;i++)
block[i].draw(batch);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
它只是滞后的,缓慢的(装载),而不是有用的。
有没有更好的方法?
关于你的代码:
您创造了很多新的精灵每帧(你的循环内render()
方法)。你应该在其他地方创建你的精灵,可能在create()
方法。
关于不TiledMap类创建地图:
您可以使用SpriteCache
代替SpriteBatch
用于构建基于瓷砖地面。你可以在例子来看看使用SpriteCache
here
关于随机生成TiledMap类
.tmx
文件的 - 仅仅是XML结构化文件。您可以使用任何XML解析器以代码生成它,这就是为什么创建随机TiledMap不成问题的原因。以下是一些基本说明:
- 为您的随机地图创建贴图集。
- 用tmx编辑器创建一个示例映射。
- 用任何文本编辑器打开它,并看看文件结构。
- 生成的代码相似的文件,任何XML解析器(可以使用libgdx内置parser)
PS我不建议你开发的2D贴图自己的解决方案,在90%的病例TMX对于创建2D地图已经足够了。您也已经在libgdx中优化了tmx render class。
@AUser欢迎回答,如果答案有助于您的问题考虑upvote,如果您不知道如何或为什么阅读此谢谢http://*.com/tour – 2014-12-14 11:19:55
谢谢!但是,我发现另一种方式! ;)\t \t batch.setProjectionMatrix(camera.combined); \t \t batch.begin(); \t \t对(INT I = 0; I AUser 2014-12-15 15:01:14
你每次渲染都会重新初始化25个新的雪碧(宝石),这可能与它为什么会滞后很多有关。将render方法顶部的for循环移动到create方法中 – grimrader22 2014-12-13 19:17:32