【发布时间】:2018-04-18 01:20:39
【问题描述】:
我正在开发一款具有 480x800 虚拟屏幕尺寸的游戏。我还使用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();
}
我应该使用多个视口吗?或者有什么办法让我的背景适合屏幕?顺便说一句,如果有办法,我不想更换我的相机。
【问题讨论】: