2016-07-30 3 views
0

Я делаю 2D-игру Android. Проблема в том, что моя черепичная игровая карта не отображается, хотя мой класс графического интерфейса отлично. Похоже, renderer.render() никогда не называется.Libgdx - карта TMX не отображается

Вот скриншот с моего телефона.

enter image description here

Он должен сделать этот плиточный карту, но это не так. enter image description here

Main.class:

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(); 
    } 
} 
+0

Можете ли вы добавить информацию о том, что программа должна делать? – Shawn

+0

Я добавил изображение этой черепичной карты. – iUuax

+0

Исправлены опечатки и незначительные механические проблемы. – Prune

ответ

0

Я думаю, вы должны использовать в 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); 

Просто попробуйте и дайте мне знать. Спасибо ...

Смежные вопросы