gpt4 book ai didi

libgdx 分辨率/密度缩放 Assets

转载 作者:行者123 更新时间:2023-12-04 00:36:45 29 4
gpt4 key购买 nike

快速提问,

我正在开发 libgdx 中的游戏,但遇到了问题。我正在尝试扩展我的 Assets ,我正在使用 Gdx.graphics.getDensity() 来获取密度,然后使用它作为乘数来设置我的 Assets 大小。我遇到的问题是,在具有 2560x1600 分辨率的平板电脑上,密度为 2.0,而具有 1080x1920 的 nexus 5 模拟器的密度为 2.652。 .. 平板电脑的密度如何小于手机的密度?

如果基于 android 应用程序屏幕尺寸的密度不可靠,我应该使用什么来获得用于缩放的乘数?

最佳答案

要回答您的第一个问题,这是一个硬件问题。 Nexus 5 的 PPI(每英寸像素)比率可能比第二个更高,即使分辨率更小。

关于您的第二个问题,我会提出 Gdx.graphics.getDensity() 的替代方案:如果您试图确保您的 Assets 相对于屏幕大小相同(即2560x1600 显示屏上的 80x80 资源将是 1280x800 显示屏上大小的一半),那么我认为您希望将资源保持相同大小并改为更改相机的大小

当您在 libGDX(或任何游戏引擎)中创建游戏时,您需要牢记游戏中三组大小/坐标之间的差异:

  • 视口(viewport) size 是您的游戏将在屏幕上绘制的空间大小。它以像素为单位,默认为您的窗口大小(在全屏游戏中为屏幕大小)。
  • 游戏世界的大小/坐标完全是任意的。它们以您想要的任何单位进行测量(米、英寸、香蕉、F16 等)。你会知道你在游戏世界单位工作,因为你有花车。
  • 相机尺寸是您一次可以看到的“世界”数量,以游戏单位衡量。您可以让您的相机显示世界的 1280x800 部分或世界的 3x5 部分或 137.6x42 部分。棘手的是,libGDX 的 OrthographicCamera 类会默认您的视口(viewport)大小,就像 1 个游戏单位 == 1 个像素一样。

希望这是有道理的。让我们看看其中的含义:

假设我在游戏世界中的 0,0 处有一个 800x600 GU(游戏单元) Assets 。我的视口(viewport)大小是 2560x1600,我的相机也缩放到 2560x1600。我的 800x600 GU 对象将在屏幕上呈现 800x600 像素的图像。

现在假设我想以相同的比例将我的游戏移植到其他屏幕尺寸(只是暂时保持简单)。我仍然有 2560x1600 视口(viewport)大小,但我将相机更改为 8x5 GU,将游戏对象更改为 2.5x1.875 GU。这些尺寸将被明确设置 - 独立于视口(viewport)尺寸。这使得 1 GU = 320px。最终结果是我的游戏对象仍将在屏幕上呈现 800x600 像素的图像。

现在让我们看看这在 1280x800 像素分辨率下是如何工作的:我的视口(viewport)是 1280x800 像素,但我的相机保持在 8x5 GU,我的游戏对象保持在 2.5x1.875 GU。由于相机的大小,1 GU = 160px,这意味着我的游戏对象以 400x300 渲染,这意味着它在较小的屏幕上的比例相同。

希望没有图片也能理解。当您开始使用具有不同纵横比的屏幕时(例如,您从 8x5 屏幕变为 3x2 屏幕),您需要一些额外的逻辑来保持视口(viewport)的纵横比与您的相机相同(否则一切都会被拉伸(stretch))。幸运的是,libGDX 提供了some viewports which will do this for you .

您可以找到 external tutorial由 libGDX 社区在这里讨论这个问题。

关于libgdx 分辨率/密度缩放 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732338/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com