我目前正在使用正视相机。在我进入游戏之前,我想先修正屏幕大小。目前,我的屏幕尺寸已设置为800 x 480.这样可以在其他设备和屏幕尺寸上正常工作吗?现在我所拥有的就是一个闪屏和游戏画面。我需要添加哪些代码才能实现这一点。LibGDX - 如何让我的游戏在所有屏幕分辨率上都能正常工作?
回答
在相机上拥有一个静态宽度是完全可以的,因为它为您的游戏提供了一个可以可靠工作的固定维度。这是有效的,因为相机被用来定义世界坐标,而这些世界坐标并不总是与屏幕坐标一一对应。
您的问题来自固定的相机高度。根据设备屏幕的高宽比,固定高度会导致屏幕拉长或缩短。如果您想考虑不同的长宽比,则需要将显示比例乘以相机高度(当前为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。
我不认为它是一个很好的解决方案。 Libgdx特别为这个问题实现了Viewports,就像4个月前那样做了所有的事情。 https://github.com/libgdx/libgdx/wiki/Viewports – BennX 2014-09-01 12:35:13
@BennX感谢您的领导。我仍然使用稍微老一点的引擎,它没有视口,所以我不知道这个解决方案。我已经更新了答案以反映这两种解决方案。 – MCeley 2014-09-01 15:48:13
@Mceley我需要将这行代码应用到我的应用程序的每个屏幕上吗? – Dakota 2014-09-02 01:22:31
我正在使用下面的方法,它几乎适用于所有屏幕大小与轻微缩放问题。
我总是使用图形图像屏幕尺寸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界面的设定位置。
- 1. 如何让我的Android游戏适合所有屏幕分辨率?
- 2. 如何让我的800 * 600游戏适合所有屏幕分辨率?
- 3. 我如何让我的CSS工作的屏幕分辨率?
- 4. Win 8 MonoGame - 游戏分辨率与屏幕分辨率对比
- 5. 如何在所有屏幕分辨率
- 6. Android上用于libgdx游戏的全屏分辨率
- 7. 屏幕分辨率无法与我的CSS正常工作
- 8. 在所有屏幕分辨率的2D游戏固定相机的左侧
- 9. Android libgdx大屏幕分辨率
- 10. 游戏开发:如何让我的spritegame动态分辨率?
- 11. 如何使我的网站适合所有屏幕分辨率
- 12. 在所有屏幕尺寸上工作的Android游戏
- 13. 屏幕分辨率。全屏 - 完美。正常屏幕 - 不完美
- 14. 所有分辨率屏幕@media
- 15. Libgdx Android游戏分割屏幕
- 16. 如何让我的游戏在屏幕上停留在屏幕上
- 17. CSS3屏幕分辨率不工作
- 18. 我如何在Android游戏中使用特定尺寸的图像到所有屏幕分辨率?
- 19. 屏幕分辨率
- 20. 屏幕分辨率
- 21. 屏幕分辨率
- 22. 屏幕分辨率
- 23. 屏幕分辨率
- 24. 屏幕分辨率
- 25. 最佳屏幕分辨率测试Android游戏
- 26. 如何让我的标题图片对所有屏幕分辨率尺寸都有响应?
- 27. 如何根据屏幕分辨率缩放libgdx中的精灵?
- 28. e.pageX在所有分辨率下工作不正常
- 29. Iphone 5游戏分辨率
- 30. 如何使游戏响应所有移动分辨率
使用像本机avd或genymotion这样的模拟器来跨多个阵列进行测试。没有做过多的libgdx工作,但这就是我通常测试解决方案的方式。 – zgc7009 2014-08-31 01:26:19
看看关于视口的libgdx的维基。我想你会找到更好的解决方案! https://github.com/libgdx/libgdx/wiki/Viewports – BennX 2014-09-01 12:32:39