我正在开发一款拥有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();
}
我应该使用多个视口吗?或者有没有办法让我的背景适合屏幕?顺便说一句,如果有办法,我不想改变我的相机。
答案 0 :(得分:0)
是的,你应该为你的HUD元素使用第二个视口。
我建议使用ExtendViewport
ExtendViewport viewport = new ExtendViewport(MyGdxGame.WIDTH,MyGdxGame.HEIGHT);
它填充所有屏幕(没有黑条)并保持所有分辨率的宽高比。