Libgdx在没有TiledMap的情况下创建快速地图

时间:2014-12-13 18:38:40

标签: java performance random map libgdx

我正在努力制作像Minecraft这样的游戏(2D)。 我不想使用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() {
    }
}

它只是滞后,缓慢(加载)而没有用。

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

关于您的代码:

每帧都会创建许多新的精灵(你的render()方法中的循环)。您应该在其他地方创建精灵,可能是create()方法。

关于创建没有TiledMap的地图:

您可以使用SpriteCache代替SpriteBatch来构建基于地形的地形。您可以查看使用SpriteCache here

的示例

关于TiledMap的随机生成

.tmx文件 - 只是XML结构化文件。您可以根据需要使用任何XML解析器在代码中生成它,这就是为什么创建随机TiledMap不是问题的原因。以下是一些基本说明:

  1. 为随机地图创建切片集。
  2. 使用tmx编辑器中的此集创建示例地图。
  3. 使用任何文本编辑器打开它,然后查看文件结构。
  4. 使用任何XML解析器在代码中生成类似的文件(您可以使用parser中内置的libgdx)
  5. P.S我不建议您为2D地图开发自己的解决方案,在90%的情况下,tmx足以创建2D地图。您还已经在libgdx中优化了tmx渲染类。