2016-07-09 15 views
0

Hallo :)Libgdx: Kann nicht gelingt, eine TiledMap mit Ansichtsfenster

Vor kurzem habe ich begonnen, Programmierung in Libgdx zu machen. Jetzt bin ich in 4 Tagen im Rendern von TiledMap auf Viewport stecken. Ich kann es nicht herausfinden, aber ich weiß, dass es möglich ist. Hier ist, wie die Prüfung TiledMap aussieht:

Testing tiled map

Wie das Spiel jetzt aussieht (keine Kacheln angezeigt):

The PlayScreen now (No tiles showing) Screen is blue becouse of ClearColor code down below.

Und hier ist mein Code in Gabebildschirm:

public class PlayScreen implements Screen, InputProcessor{ 
    MainGame game; 

    private OrthographicCamera camera; 
    private Viewport gamePort; 

    private OrthogonalTiledMapRenderer renderer; 


    public PlayScreen(MainGame game) { 
     this.game = game; 

     camera = new OrthographicCamera(); 
     gamePort = new StretchViewport(MainGame.V_WIDTH/MainGame.PPM, 
       MainGame.V_HEIGHT/MainGame.PPM, camera); 
     renderer = new OrthogonalTiledMapRenderer(LevelManager.tiledMap, 
       1/ MainGame.PPM); 
     camera.position.set(gamePort.getWorldWidth()/2, gamePort.getWorldHeight()/2, 0); 

     Gdx.input.setInputProcessor(this); 
    } 

    @Override 
    public void show() { 

    } 

    public void update(float delta){ 
     camera.update(); 
    } 

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

     Gdx.gl.glClearColor((float)66/255, (float)66/255, (float)255/255, 0f); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     renderer.setView(camera); 
     renderer.render(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     gamePort.update(width, height); 
    } 

    @Override 
    public void pause() { 

    } 

    @Override 
    public void resume() { 

    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void dispose() { 

    } 

    @Override 
    public boolean keyDown(int keycode) { 
     return false; 
    } 

    @Override 
    public boolean keyUp(int keycode) { 
     return false; 
    } 

    @Override 
    public boolean keyTyped(char character) { 
     return false; 
    } 

    @Override 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     return false; 
    } 

    @Override 
    public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
     return false; 
    } 

    @Override 
    public boolean touchDragged(int screenX, int screenY, int pointer) { 
     return false; 
    } 

    @Override 
    public boolean mouseMoved(int screenX, int screenY) { 
     return false; 
    } 

    @Override 
    public boolean scrolled(int amount) { 
     return false; 
    } 
} 

Die LevelManager.tiledMap wird in der Methode create in der Klasse MainGame geladen, also lade ich sie einfach, aber sie wird nicht angezeigt auf dem Bildschirm. Es tut, wenn ich den Viewport nicht verwende.

Sie alle für zukünftige Hilfe danken :)

+0

Wenn Ihre Konstanten in MainGame Ganzzahlen sind, werfen Sie sie in Ihrem Ansichtsfensterkonstruktor auf Gleitkommazahlen. – Tenfour04

Antwort

0

ich dieses Problem aus fount, war es becouse PPM (Pixel pro Meter) in Hauptspiel Klasse haben Integer im Format gewesen und es hat Float sein , ansonsten wird die Karte wegen der Skalierung der Divisionsprobleme nicht dargestellt.