【问题标题】:LibGDX: Can't manage to render a TiledMap with viewportLibGDX:无法使用视口渲染 TiledMap
【发布时间】:2016-07-09 10:07:28
【问题描述】:

你好 :)

最近我开始在 LibGDX 中编程。现在我在 Viewport 上渲染 TiledMap 有 4 天了。我想不通,但我知道这是可能的。以下是测试 TiledMap 的外观:

Testing tiled map

游戏现在的样子(没有显示图块):

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

这是我在 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;
    }
}

LevelManager.tiledMap 在 MainGame 类的 create 方法中被加载,所以我加载它就好了,但它没有显示在屏幕上。当我不使用视口时它会这样做。

谢谢大家以后的帮助:)

【问题讨论】:

  • 如果 MainGame 中的常量是整数,请在视口构造函数中将它们转换为浮点数。

标签: java android libgdx rendering tiled


【解决方案1】:

我发现了这个问题,这是因为 MainGame 类中的 PPM(每米像素)的格式是 Integer 并且必须是 Float,否则由于缩放中的分割问题,地图不会渲染。

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多