我目前正在使用正交相机。在我进入游戏之前,我想首先修复屏幕尺寸。目前,我的屏幕尺寸设置为800 x 480.这是否适用于其他设备和屏幕尺寸?现在我只有一个闪屏和游戏画面。我需要添加哪些代码才能实现此目的。
答案 0 :(得分:6)
在相机上使用静态宽度是完全可以的,因为它可以为您的游戏提供一个可靠的工作单一固定尺寸。这是有效的,因为相机用于定义世界坐标,这些坐标并不总是一对一的屏幕坐标。
您的问题来自固定的相机高度。具有固定高度将导致屏幕伸展得更高或更短,具体取决于设备屏幕的纵横比。如果要考虑不同的宽高比,则需要将相机高度(当前为480)乘以显示比例。您可以通过将高度除以高度来获得屏幕比率。这看起来像是:
float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();
OrthographicCamera camera = new OrthographicCamera(800, 480 * (height / width));
正如BennX在评论中指出的那样,LibGDX引入了视口,它允许你以不同的方式完成与上面相同的事情。为了达到与上述相同的效果,仅使用视口,您可以使用ExtendViewport
。这样做是为了在一个方向上保持世界尺寸,同时在另一个方向上拉伸它。因此,世界将首先向上扩展以填充屏幕,然后在保持纵横比的同时扩展较短的尺寸。要创建这种类型的视口,它看起来像这样:
OrthographicCamera camera = new OrthographicCamera(800, 480);
ExtendViewport viewport = new ExtendViewport(800, 480, camera);
上面的视口的最小宽度为800,最小高度为480.其中一个值在应用视口后将相同,另一个将根据屏幕的宽高比更改。更窄的屏幕将具有更多的垂直空间,而更宽的屏幕将具有更多的水平空间。有关视口的更多信息,请访问LibGDX wiki页面here。
答案 1 :(得分:0)
我正在使用以下方法,它适用于几乎所有屏幕尺寸都有可忽略的轻微缩放问题。
我总是使用图形图像作为屏幕尺寸1920.0x1080.0
ScreenViewport screenViewport=new ScreenViewport(camera);
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight()));
您可以在此处设置Math.min()或Math.max()的方法。
这会使您的相机视口尺寸接近1920.0 * 1080.0
Device screen-size Math.max() Math.max()
800.0x480.0 1800.0x1080.0 1920.0x1152.0
1920.0x1080.0 1920.0x1080.0 1920.0x1080.0
2048.0x1440.0 1536.0x1080.0 1920.0x1350.0
注意:始终使用camera.viewportWidth和camera.viewportHeight来设置游戏UI屏幕的位置。