这是几乎所有Libgdx教程bigest问题之一。它们很棒,但是像素对单位/对话单位是错误的。
Libgdx为Camera
提供了一个很好的解决方案,并且使用新的Viewport
类(其内部工作使用Camera
)提供了更好的解决方案。
它非常简单,将解决不同的屏幕尺寸/宽高比的问题。
只需选择一个Virtual_Width
和Virtual_Height
(以米或类似单位考虑它)。例如
例如,人类在2D平台游戏中互相争斗。 LEts说我们的人类身高2米,所以想想,一个人使用多少屏幕空间?如果我们说,人类应该占据1/10的屏幕空间,我们的虚拟高度是10 * 2 = 20。现在考虑你所针对的主要方面配给。假设它是16/9,所以你的虚拟宽度约为35.
接下来,你需要考虑你想要什么样的Viewport
。您确定要使用支持Virtual_Width
和Virtual_Heigth
的Viewport
。
您可能需要一个Viewport
,它保留纵横比并用黑条(FitViewport
)填充屏幕的其余部分(如果屏幕具有不同的纵横比),或者您可能希望Viewport
通过拉伸单位填充整个屏幕(StretchViewport
)。
现在只是虚拟的宽度和heigth创建Viewport
并在resize()
方法与给定width
和height
更新。
希望它有帮助。
我和你在一起。每个像素都是一个问题,因为它不仅会改变屏幕比例,还会改变宽高比。根据屏幕本身的不同,屏幕上的数字看起来很瘦或很宽。那很糟。 – markspace 2014-10-30 05:01:05
'开发人员通常只能使用预定义的世界坐标系,并让相机将其转换为所选的屏幕坐标。“这是正确的方式 – EpicPandaForce 2014-10-30 09:14:13
可能更适合http://gamedev.stackexchange.com/ (我的意思是“游戏开发”......) – Marco13 2014-10-30 09:21:56