簡體   English   中英

LibGDX-將等軸測圖縮放到屏幕尺寸。 大屏幕大地圖

[英]LibGDX - Scaling Isometric Tiled Map to screen size. Larger screen larger map

我是LibGDX的新手,所以我一直試圖了解它的要旨。 我在屏幕上繪制了一個等軸測圖,最后兩天后,我設法將其在屏幕上居中。 但是,無論屏幕有多大,它都保持相同的大小。 這是我的意思:

800x600

1920x1080

我想要做的是根據屏幕的大小放大地圖。 這是代碼:

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, 0, 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 * 2;
        camera.viewportHeight = height * 2;
        camera.position.set(768, 0, 0);
        camera.update();
    }

    @Override
    public void pause() {}

    @Override
    public void resume() {}

    @Override
    public void hide() {}

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

提前致謝!

要使用不同的屏幕尺寸,libGDX具有視口 它們使屏幕上所有圖形的比例在不同屏幕上保持相同。

例如FitViewport ,它將始終保持虛擬屏幕尺寸的縱橫比,同時盡可能縮放以適合屏幕尺寸。

  public class PlayScreen implements Screen {

    private TiledMap map;
    private IsometricTiledMapRenderer isometricRenderer;
    private FitViewport viewport;

    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);

        int width = 800; // Can change to other
        int height = 480;
        viewport = new FitViewport(width, height, new OrthographicCamera(width, height));

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM