首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgdx - TMX映射未呈现

Libgdx - TMX映射未呈现
EN

Stack Overflow用户
提问于 2016-07-30 20:47:57
回答 1查看 181关注 0票数 0

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

这是我手机上的截图。

它应该渲染这个平铺贴图,但它没有。

Main.class:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-08-01 18:33:03

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

代码语言:javascript
复制
   camera.setToOrtho(false,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());

代替FitViewport,

代码语言:javascript
复制
gameView = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), camera);
 camera.position.set(gameView.getWorldWidth() / 2, gameView.getWorldHeight() / 2, 0);

只要试一试,让我知道。谢谢..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38674138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档