我正在制作一款游戏,具有静态游戏性(即固定背景)。我希望瞄准纵横比在1.33(800x600)到1.77(854x480)范围内的设备。对于我的游戏区域,我想要一个固定的纵横比。对于我的HUD,我想要相对于Scren大小的固定位置我正在使用阶段来实现HUD,游戏区域。
- 注意此处世界大小是指虚拟大小(如Springrbua所述)
第一个问题-是否可以以恒定的世界大小或设置一些ViewPort(拉伸、填充等)来针对大范围的屏幕?
第二个问题-以像素为单位的世界大小应该是多少,以便我可以根据它创建图形?
第三个问题-HUD、Gameplay的视口应该是什么?
我的经验。。。我用WorldSize(855 x 600)和FillViewPort为gamePlay和StretchViewPortHUD开始了一个游戏。到目前为止,游戏性还不错,但我在HUD方面面临着许多问题。无论我做什么,HUD元素的位置都不一样(无论屏幕大小都是固定的位置)。
最后一个-创建分辨率为855x600的背景是正确的做法吗?
Plz提出了更好的替代方案、方法或我做错了什么。
提前感谢。
抱歉我英语不好。
首先:世界大小与视口大小(或下面文本中的虚拟大小)不同:
Worldsize:级别的大小
虚拟尺寸:您可以在屏幕上看到的级别部件/世界部件的尺寸
通常你只能看到关卡的一部分,Camera
会向上移动以显示不同的部分
如果整个级别同时显示在屏幕上,则世界大小和虚拟大小是相同的
为了使一切尽可能简单,他们应该使用相同的单位(例如米)。
使用libgdx,不仅可以有固定的虚拟大小,而且非常容易。
正如您所注意到的,有Viewport
类,其中一些类支持虚拟大小为。
你应该在游戏区域使用的Viewport
是FitViewport
,它支持虚拟大小,并通过显示黑色边框来保持纵横比(例如,16/10屏幕上的16:9纵横比将导致屏幕顶部和底部出现黑色边框)
对于HUD,你可以使用另一个Viewport
,我想StretchViewport
还可以。它还支持虚拟尺寸,但它没有保持纵横比,而是拉伸了东西(例如,16/10屏幕上16:9虚拟纵横比的元素将上下拉伸)以填充屏幕。
您要选择的虚拟大小取决于游戏。这样想吧:
- 屏幕上有哪些实体?例如人类
- 它们在现实生活中有多大人类身高约1.75米
- 我希望它们在屏幕上有多大?人应该是屏幕的1/10左右
好吧,现在你有1.75米应该是1/10屏幕高度。因此屏幕大小为1.75*10=17.5
简单一点,让我们猜测我们有更高的(1.8米)人类,所以我们的虚拟身高现在是18。
现在想想纵横比,我想要一个16/9的纵横比,这意味着16/9 = width/*18*
我们的虚拟宽度是32
现在我们有一个32*18m的虚拟大小。最大的优点是:现在一切都可以用米来计算。如果您想将人类移动1米,只需在其位置加1即可。
正如我所说,Viewport
可以是游戏的FitViewport
,因为你想保持纵横比和HUD,我想StretchViewport
会很好,但你可以尝试不同的,并选择你喜欢的。
希望能有所帮助。