简体   繁体   English

LibGDX:无法使用视口渲染TiledMap

[英]LibGDX: Can't manage to render a TiledMap with viewport

Hello :) 你好 :)

Recently I have started programming in LibGDX. 最近,我开始用LibGDX编程。 Now im 4 days stuck in rendering TiledMap on Viewport. 现在,我在视口上渲染TiledMap停留了4天。 I cant figure it out, but i know it is possible. 我无法弄清楚,但我知道这是可能的。 Here is how the testing TiledMap looks: 这是测试TiledMap的外观:

Testing tiled map 测试平铺地图

How the game looks now ( no tiles showing ): 游戏现在的外观(无图块显示):

The PlayScreen now (No tiles showing) Screen is blue becouse of ClearColor code down below. 现在的PlayScreen(不显示图块)屏幕为蓝色,这是因为下面的ClearColor代码。

And here is my code in PlayScreen: 这是我在PlayScreen中的代码:

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

The LevelManager.tiledMap gets loaded in create method in MainGame class, so I load it just fine, but it doesnt show on the screen. LevelManager.tiledMap被加载到MainGame类的create方法中,因此我可以很好地加载它,但是它不会显示在屏幕上。 It does when i dont use the Viewport. 当我不使用视口时,它会显示。

Thank you all for future help :) 谢谢大家今后的帮助:)

我发现了这个问题,这是因为MainGame类中的PPM(每米像素数),采用Integer格式且必须为Float ,否则地图将不会因为比例缩放中的划分问题而呈现。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM