2014-10-30 142 views
4

朋友和我自己都是游戏开发的新手,我们讨论过世界坐标和屏幕坐标。游戏开发 - 使用屏幕坐标与世界坐标

我们正在关注libGDX的精彩在线教程系列,它们使用100 PPM(每米像素)比例因子。如果重新调整屏幕大小,对象的缩放将不再起作用。我的朋友相信这不是问题,他可能是对的。但是,我的印象是,开发游戏时,开发人员通常只能使用预定义的世界坐标系,并让相机将其转换为所选的屏幕坐标。我确实理解使用鼠标点击时需要进行反向转换等。但是,我关心的是,在世界空间中放置和缩放对象。

我想联系这个社区获取一些专业反馈。

+2

我和你在一起。每个像素都是一个问题,因为它不仅会改变屏幕比例,还会改变宽高比。根据屏幕本身的不同,屏幕上的数字看起来很瘦或很宽。那很糟。 – markspace 2014-10-30 05:01:05

+3

'开发人员通常只能使用预定义的世界坐标系,并让相机将其转换为所选的屏幕坐标。“这是正确的方式 – EpicPandaForce 2014-10-30 09:14:13

+0

可能更适合http://gamedev.stackexchange.com/ (我的意思是“游戏开发”......) – Marco13 2014-10-30 09:21:56

回答

3

这是几乎所有Libgdx教程bigest问题之一。它们很棒,但是像素对单位/对话单位是错误的。
Libgdx为Camera提供了一个很好的解决方案,并且使用新的Viewport类(其内部工作使用Camera)提供了更好的解决方案。

它非常简单,将解决不同的屏幕尺寸/宽高比的问题。
只需选择一个Virtual_WidthVirtual_Height(以米或类似单位考虑它)。例如
例如,人类在2D平台游戏中互相争斗。 LEts说我们的人类身高2米,所以想想,一个人使用多少屏幕空间?如果我们说,人类应该占据1/10的屏幕空间,我们的虚拟高度是10 * 2 = 20。现在考虑你所针对的主要方面配给。假设它是16/9,所以你的虚拟宽度约为35.

接下来,你需要考虑你想要什么样的Viewport。您确定要使用支持Virtual_WidthVirtual_HeigthViewport
您可能需要一个Viewport,它保留纵横比并用黑条(FitViewport)填充屏幕的其余部分(如果屏幕具有不同的纵横比),或者您可能希望Viewport通过拉伸单位填充整个屏幕(StretchViewport)。

现在只是虚拟的宽度和heigth创建Viewport并在resize()方法与给定widthheight更新。

希望它有帮助。

1

这是更好的名字为每米

单位,当你调整你的屏幕,你只需设置一个新的投影矩阵,所以一切正常)

你应该担心什么这是一个纵横比。

一切都是无关紧要的。

回答你的问题 - 保持世界坐标。 它也使简单的添加物理,光计算,任何尺寸(1.8单位,而不是243像素)

+0

每米的单位应该在模型上。模型中的1.0单位应该是一米,或者其他什么,然后将视角设置为任何屏幕宽高比。 – markspace 2014-10-30 05:02:52

+0

如果你用单位来计算所有的东西,这个对话就没有必要,单位也可以是米,但那只是一个名字。在我看来,你应该只是计算你的优先单位的一切,让相机将其转换为像素。 – Springrbua 2014-10-30 09:53:08

+0

这正是我的意思 – ekiyanov 2014-10-30 10:02:26

相关问题