android - LibGDX - 如何让我的游戏在所有屏幕分辨率下运行?

标签 android libgdx

我目前正在使用正交相机。在我深入游戏之前,我想先修复屏幕尺寸。目前,我将屏幕尺寸设置为 800 x 480。这在其他设备和屏幕尺寸上是否适用?现在我只有启动画面和游戏画面。我必须添加哪些代码行才能实现此目的。

最佳答案

在你的相机上设置一个静态宽度是完全可以的,因为它给你的游戏一个单一的固定尺寸,你可以可靠地使用它。这是可行的,因为相机用于定义世界坐标,而世界坐标并不总是与屏幕坐标一一对应。

您的问题来自固定的相机高度。固定高度会导致屏幕根据设备屏幕的纵横比变高或变短。如果您想考虑不同的宽高比,您需要将相机高度(目前为 480)乘以显示比。您可以通过将高度除以宽度除以高度来获得屏幕比例。这看起来像:

float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();

OrthographicCamera camera = new OrthographicCamera(800, 480 * (height / width));

正如 BennX 在评论中指出的那样,LibGDX 引入了视口(viewport),它允许您以不同的方式执行与上述相同的操作。要实现与我上面概述的相同效果,仅使用视口(viewport),您可以使用 ExtendViewport。这样做的目的是在一个方向上保持世界大小,同时在另一个方向上拉伸(stretch)它。所以世界将首先放大以填满屏幕,然后在保持宽高比的情况下扩展较短的维度。要创建这种类型的视口(viewport),它看起来像这样:

OrthographicCamera camera = new OrthographicCamera(800, 480);
ExtendViewport viewport = new ExtendViewport(800, 480, camera);

上面的视口(viewport)的最小宽度为 800,最小高度为 480。应用视口(viewport)后,其中一个值将相同,另一个将根据屏幕的纵横比发生变化。更窄的屏幕将有更多的垂直空间,而更宽的屏幕将有更多的水平空间。有关视口(viewport)的更多信息,请访问 LibGDX 维基页面 here .

关于android - LibGDX - 如何让我的游戏在所有屏幕分辨率下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25588099/

相关文章:

java - 表达式的类型必须是数组类型,但它解析为 SoapObject

android - 不使用 GCM 为 Android 创建推送通知服务器

android - 如何使用 android google map sdk v2 绘制虚线折线?

java - Libgdx Scene2d 进度条永远不会为空

android - 查看其他 Android 应用产生的网络流量

android - 如何将切换按钮状态与前台服务同步?

java - 定位按钮绝对 x,y

java - Libgdx TiledMapRenderer 与 TmxMapLoader 尖峰

java - 图像从一侧移动到另一侧

unit-testing - 通过 HeadlessApplication 调用 ShaderProgram(例如 Stage)的单元测试 Libgdx 类