2017-11-09 5 views
0

Seit ein paar Tagen bastele ich mit LibGDX herum. Ich habe es geschafft, eine Isometric Tiled Map auf den Bildschirm zu bringen, aber ich kann einfach nicht herausfinden, wie man es richtig zentriert. Hier ist der Code:LibGDX - Wie zentriert man eine Isometric Tiled Map auf dem Bildschirm?

public class PlayScreen implements Screen { 

    private TiledMap map; 
    private IsometricTiledMapRenderer isometricRenderer; 
    private OrthographicCamera camera; 

    public void createUI() { 
     // Load map from tiled .tmx file. 
     map = new TmxMapLoader().load("arena1/arena1.tmx"); 

     // Setup isometric renderer and camera. 
     isometricRenderer = new IsometricTiledMapRenderer(map); 
     camera = new OrthographicCamera(); 
    } 

    @Override 
    public void show() { 
     Gdx.gl.glClearColor(0, 0, 1, 1); 
     createUI(); 
    } 

    @Override 
    public void render(float delta) { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     isometricRenderer.setView(camera); 
     isometricRenderer.render(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     camera.viewportWidth = width; 
     camera.viewportHeight = height; 
     camera.update(); 
    } 

    @Override 
    public void pause() {} 

    @Override 
    public void resume() {} 

    @Override 
    public void hide() {} 

    @Override 
    public void dispose() { 
     map.dispose(); 
     isometricRenderer.dispose(); 
    } 

} 

Und hier ist das, was ich bekommen:

enter image description here

Vielen Dank im Voraus!

Antwort

0

Tiled map hat nicht Methode oder etwas Ähnliches. Also, was Sie tun sollten, ist Ihre Kamera zu bewegen.

Rufen Sie diese in Ihrer Render Methode, um Ihre Kamera durch WASD bewegen:

private void cameraController(Camera camera){ 

    if (Gdx.input.isKeyPressed(Input.Keys.W)) { 
     camera.translate(0, 10, 0); 
    } 
    if (Gdx.input.isKeyPressed(Input.Keys.S)) { 
     camera.translate(0, -10, 0); 
    } 
    if (Gdx.input.isKeyPressed(Input.Keys.A)) { 
     camera.translate(-10, 0, 0); 
    } 
    if (Gdx.input.isKeyPressed(Input.Keys.D)) { 
     camera.translate(10, 0, 0); 
    } 
} 

Sie auch 10 ändern können, zu beschleunigen, was Sie wollen.

Oder wenn Sie es nicht mit WASD verschieben möchten, können Sie einfach die Position direkt einstellen.

camera.setPosition(x, y, z); 
+0

Ich habe camera.setPosition() vor dem Posten ausprobiert, aber ich konnte es nicht zentrieren, was soll ich als Parameter verwenden? –

+0

@MartimFerreira vielleicht Ihre Kartenbreite und -höhe geteilt durch 2? – icarumbas

+0

@MartimFerreira Wenn meine Antwort Ihr Problem gelöst hat, bitte markieren Sie es als richtig. – icarumbas

0

Managed es mit

camera.position.set(768, 0, 0); 

768 ist die Hälfte der Breite der Karte zu tun.

Verwandte Themen