2016-07-30 4 views
0

Ich mache ein 2D-Android-Spiel. Das Problem ist, dass meine gekachelte Spielkarte nicht gerendert wird, obwohl meine GUI-Klasse in Ordnung ist. Es sieht aus wie renderer.render() wird nie aufgerufen.Libgdx - TMX Karte nicht gerendert

Hier ist Screenshot von meinem Handy.

enter image description here

Es sollte diese geflieste Karte machen, aber es funktioniert nicht. 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

Können Sie einige Details hinzufügen, was das Programm tun soll? – Shawn

+0

Ich habe ein Bild dieser gekachelten Karte hinzugefügt. – iUuax

+0

Korrigierte Tippfehler und kleinere mechanische Probleme. – Prune

Antwort

0

Ich glaube, Sie in setToOrtho() Methode create() verwenden sollte,

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

Anstelle von FitViewport,

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

Versuchen Sie es einfach und lassen Sie es mich wissen. Danke ...