我目前正在使用正交相机。在深入了解游戏之前,我想先解决屏幕尺寸的问题。当前,我的屏幕尺寸设置为800 x 480。这个设置能够适配其他设备和不同的屏幕尺寸吗?现在我只有一个闪屏和游戏画面。我需要添加哪些代码才能实现这一点。
我目前正在使用正交相机。在深入了解游戏之前,我想先解决屏幕尺寸的问题。当前,我的屏幕尺寸设置为800 x 480。这个设置能够适配其他设备和不同的屏幕尺寸吗?现在我只有一个闪屏和游戏画面。我需要添加哪些代码才能实现这一点。
在相机上设置一个静态宽度是完全可以的,因为它给了你的游戏一个可靠的单一固定维度。这是有效的,因为相机用于定义世界坐标,而世界坐标不总是与屏幕坐标一一对应。
你的问题出在相机高度的固定上。设置固定高度将导致屏幕根据设备屏幕的纵横比例变得更高或更短。如果你想考虑不同的纵横比,你需要将相机高度(目前为480)乘以显示比例。你可以通过将高度除以宽度再除以高度来获取屏幕比例。这会看起来像是:
float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();
OrthographicCamera camera = new OrthographicCamera(800, 480 * (height / width));
OrthographicCamera camera = new OrthographicCamera(800, 480);
ExtendViewport viewport = new ExtendViewport(800, 480, camera);
上面的视口将具有最小宽度为800和最小高度为480。在应用视口后,这些值中的一个将保持不变,另一个将根据屏幕的纵横比而改变。较窄的屏幕将具有更多的垂直空间,而较宽的屏幕将具有更多的水平空间。欲了解更多关于视口的信息,请访问LibGDX wiki页面此处。
我使用以下方法,它适用于几乎所有屏幕大小,只有微小的缩放问题。
我总是使用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屏幕的位置。