游戏开发 - 使用屏幕坐标与世界坐标

时间:2014-10-30 04:48:53

标签: java libgdx game-engine

朋友和我自己是游戏开发的新手,我们讨论了世界坐标和屏幕坐标。

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

我想联系这个社区寻求一些专业的反馈。

2 个答案:

答案 0 :(得分:3)

这是几乎所有Libgdx教程中最大的问题之一。它们很棒,但像素到米/单位的对话是错误的 Libgdx为Camera提供了一个很好的解决方案,并为新的Viewport类提供了更好的解决方案(在Camera下工作)。

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

接下来,您需要考虑您想要的Viewport类型。您确定要使用支持ViewportVirtual_Width的{​​{1}} 您可能需要一个Virtual_Heigth,它可以保持宽高比并填充屏幕的其余部分(如果屏幕具有不同的宽高比)和黑条(Viewport),或者您可能需要FitViewport通过拉伸单位(Viewport)来填充整个屏幕。

现在只需使用您的虚拟宽度和高度创建StretchViewport,然后使用给定的Viewportresize()width方法中更新它。

希望它有所帮助。

答案 1 :(得分:1)

它更好的名称为每米单位

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

你应该担心它的宽高比。

休息一切都无所谓。

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