Libgdx背景图像不适合

时间:2017-11-05 22:46:02

标签: java android libgdx

我正在开发一款拥有480x800 VIRTUAL屏幕尺寸的游戏。我也使用TiledMapRenderer渲染我的地图。我的问题是将背景和HUD元素拟合到屏幕中,其比例不同于480/800(大多数高的设备)。某些设备在屏幕底部显示空白区域。

//my viewport (WIDTH = 480, HEIGHT = 800)
viewport = new ScalingViewport(Scaling.fillX,MyGdxGame.WIDTH,MyGdxGame.HEIGHT,camera);

@Override
public void resize(int width, int height) {
    viewport.update(width, height, true);
    camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0);
    barriers.getRenderer().setProjectionMatrix(viewport.getCamera().combined);
    shapeRenderer.setProjectionMatrix(viewport.getCamera().combined);
}

我的屏幕应该适合X,但背景图像应该适合X和Y而不改变宽高比。在这种情况下,ScalingViewport无法解决我的问题,如果我更改了视口,我必须从头开始编写所有代码。

 @Override
    public void render(float delta) {
        update(delta);
        SpriteBatch sb = game.batch;
        Gdx.gl.glClearColor(46f/255,46f/255,46f/255,1f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        sb.setProjectionMatrix(camera.combined);
        sb.begin();
    //this has to change in somehow
    sb.draw(AssetManager.backgroundMenu,0,0,MyGdxGame.WIDTH,MyGdxGame.HEIGHT);
        sb.end();
     }

我应该使用多个视口吗?或者有没有办法让我的背景适合屏幕?顺便说一句,如果有办法,我不想改变我的相机。

1 个答案:

答案 0 :(得分:0)

是的,你应该为你的HUD元素使用第二个视口。

我建议使用ExtendViewport

ExtendViewport viewport = new ExtendViewport(MyGdxGame.WIDTH,MyGdxGame.HEIGHT);

它填充所有屏幕(没有黑条)并保持所有分辨率的宽高比。