繁体   English   中英

Libgdx-TMX地图未呈现

[英]Libgdx - TMX map not rendered

我正在制作2D Android游戏。 问题是尽管我的GUI类很好,但我的平铺游戏地图没有呈现。 看起来renderer.render()从未被调用过。

这是我手机的屏幕截图。

在此处输入图片说明

它应该渲染此平铺的地图,但不是。 在此处输入图片说明

主类:

public class Main extends ApplicationAdapter implements Screen {
    private ZombieGame game;
    private OrthographicCamera camera;
    private Viewport gameView;
    private GUI gui;
    private TmxMapLoader mapLoader;
    private TiledMap map;
    private OrthogonalTiledMapRenderer renderer;

    public Main(ZombieGame game){
        this.game = game;

        camera = new OrthographicCamera();
        gameView = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), camera);

        gui = new GUI(game.batch);

        mapLoader = new TmxMapLoader();
        map = mapLoader.load("level1.tmx");
        renderer = new OrthogonalTiledMapRenderer(map);
        camera.position.set(gameView.getWorldWidth() / 2, gameView.getWorldHeight() / 2, 0);
    }

    @Override
    public void show(){

    }

    @Override
    public void hide(){

    }

    @Override
    public void create () {

    }

    public void keyEvent(float dt){
        if(Gdx.input.isTouched()){
            camera.position.x -= 100 * dt;
            System.out.println("COORD: " + camera.position.x);
        }
    }

    public void update(float dt){
        keyEvent(dt);
        camera.update();
        renderer.setView(camera);
    }

    @Override
    public void render(float delta) {
        update(delta);

        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        renderer.render();

        game.batch.setProjectionMatrix(gui.stage.getCamera().combined);
        gui.stage.draw();
    }

    @Override
    public void dispose() {

    }
}

ZombieGame.class:

public class ZombieGame extends Game{
    public SpriteBatch batch;

    @Override
    public void create(){
        batch = new SpriteBatch();
        setScreen(new Main(this));
    }

    @Override
    public void render(){
        super.render();
    }
}

我认为您应该在create()的setToOrtho()方法中使用,

   camera.setToOrtho(false,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());

代替FitViewport,

gameView = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), camera);
 camera.position.set(gameView.getWorldWidth() / 2, gameView.getWorldHeight() / 2, 0);

请尝试一下,让我知道。 谢谢...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM