簡體   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