android - 如何决定 WorldSize,GamePlay 和 HUD 的视口(viewport)

标签 android ios mobile libgdx game-development

我正在制作一款具有静态游戏玩法(即固定背景)的游戏。 我想定位纵横比在 1.33(800x600) 到 1.77(854x480) 范围内的设备。 对于我的 playArea,我想要一个固定的纵横比。 对于我的 HUD,我想要相对于 Scrren Size 的固定位置 我正在使用阶段来实现 HUD、游戏区域。

  • 注意这里的World Size是指虚拟大小(如 Springrbua 所述)

第一个问题- 是否有可能以恒定的worldsize 或设置一些 ViewPort-(拉伸(stretch)、填充等)来定位广泛的屏幕?

第二个问题 - 以像素为单位的世界大小应该是多少,以便我可以根据它创建图形?

第三个问题 - HUD、游戏玩法的视口(viewport)应该是什么?

我的经历... 我开始游戏时使用 WorldSize (855 x 600)Fill ViewPort 用于 gamePlay 和 StretchViewPort 用于 HUD。到目前为止,游戏玩法还不错,但是我在使用 HUD 时面临很多问题。无论我做什么,HUD 元素的位置永远不会保持不变(无论屏幕大小如何,固定位置)。

最后一个 - 创建分辨率为 855x600 的背景是否正确?

Plz 建议更好的选择、方法或我做错了什么。

提前致谢。

抱歉我的英语不好。

最佳答案

首先:世界大小与视口(viewport)大小(或下文中的虚拟大小)不同:
Worldsize: 关卡大小
Virtual size:你在屏幕上可以看到的关卡部分/世界部分的大小

通常你只能看到关卡的一部分,Camera 会四处移动以显示不同的部分。
如果整个关卡一次显示在屏幕上,则世界大小和虚拟大小相同。
为了尽可能简单,他们应该使用相同的单位(例如米)。

使用 libgdx 不仅可以拥有固定的虚拟大小,而且还非常容易。

正如您已经注意到的,有 Viewport 类,其中一些支持虚拟尺寸。
您应该为游戏区域使用的 ViewportFitViewport,它支持虚拟大小并通过显示黑色边框保持纵横比(例如 16:9 的纵横比) 16/10 屏幕将导致屏幕顶部和底部出现黑色边框。
对于 HUD,您可以使用另一个 Viewport,我想 StretchViewport 没问题。它还支持虚拟尺寸,但不是保持纵横比而是拉伸(stretch)东西(例如 16/10 屏幕上 16:9 虚拟纵横比的元素将被上下拉伸(stretch))以填满屏幕。

您要选择的虚拟大小取决于游戏。试想一下:

  1. 屏幕上有哪些实体?例如人类
  2. 它们在现实生活中有多大? 人类高度约1.75m。
  3. 我希望它们在屏幕上有多大? 应该占屏幕的大约 1/10。

好的,现在 1.75m 应该是屏幕高度的 1/10。因此屏幕尺寸为 1.75*10=17.5
为了让它更简单一点,让我们假设我们有一个更高的(1.8m)人类,所以我们的虚拟高度现在是18

现在考虑纵横比,我想要 16/9 的纵横比,这意味着 16/9 = width/*18*
我们的虚拟宽度是32
现在我们有了一个32*18m的虚拟尺寸。最大的优势:现在一切都可以用米来计算。如果要将 移动 1m,只需将其位置加 1。

正如我已经说过的那样,Viewport 可以是游戏的 FitViewport,因为你想保持纵横比,我想对于 HUD StretchViewport 会很好,但你可以尝试不同的并选择你喜欢的。

希望对您有所帮助。

关于android - 如何决定 WorldSize,GamePlay 和 HUD 的视口(viewport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677930/

相关文章:

iphone - 向 WebService 写入请求的位置

iphone - 应调用哪个 TextField 委托(delegate)方法?

ios - CGContextClipToMask 可以用 alpha=1 屏蔽所有非透明像素吗?

html - 错误显示下拉菜单(移动)bootstrap

android - '在包 'textcolor' 中找不到属性 'android' 的资源标识符'

android - ExoPlayer Hls 质量

java - 杀死应用程序 Picasso 在 android 中的应用程序中随处重新加载图像

c# - Xamarin 在某些情况下不显示图像

html - 谷歌验证码 Div 标签在移动和桌面上看到时错位

html - 并排 float 到相同大小的盒子