朋友和我自己是游戏开发的新手,我们讨论了世界坐标和屏幕坐标。
我们正在关注libGDX的精彩在线教程系列,他们正在使用100 PPM(每米像素)缩放系数。如果重新调整屏幕大小,对象的缩放将不再有效。我的朋友确信这不是问题,他可能是对的。但是,我的印象是,在开发游戏时,开发人员通常只应使用预定义的世界坐标系,并让相机将其转换为所选的屏幕坐标。我确实理解在使用鼠标点击等时需要进行反向变换。但是,在世界空间中放置和缩放对象是我的关注点。
我想联系这个社区寻求一些专业的反馈。
答案 0 :(得分:3)
这是几乎所有Libgdx教程中最大的问题之一。它们很棒,但像素到米/单位的对话是错误的
Libgdx为Camera
提供了一个很好的解决方案,并为新的Viewport
类提供了更好的解决方案(在Camera
下工作)。
它非常简单,可以解决不同屏幕尺寸/宽高比的问题
只需选择Virtual_Width
和Virtual_Height
(以米或类似单位计算)
例如,你让人类在2D平台游戏中互相争斗。 LEts说我们的人类身高2米,所以想一想,人类应该使用多少屏幕空间?如果我们说,人类应该占据屏幕空间的1/10,我们的虚拟高度是10 * 2 = 20。现在考虑一下您所针对的主要方面比例。可以说它是16/9,所以你的虚拟宽度约为35。
接下来,您需要考虑您想要的Viewport
类型。您确定要使用支持Viewport
和Virtual_Width
的{{1}}
您可能需要一个Virtual_Heigth
,它可以保持宽高比并填充屏幕的其余部分(如果屏幕具有不同的宽高比)和黑条(Viewport
),或者您可能需要FitViewport
通过拉伸单位(Viewport
)来填充整个屏幕。
现在只需使用您的虚拟宽度和高度创建StretchViewport
,然后使用给定的Viewport
和resize()
在width
方法中更新它。
希望它有所帮助。
答案 1 :(得分:1)
它更好的名称为每米单位
当你调整屏幕大小时,你只需设置一个新的投影矩阵,所以一切正常。)
你应该担心它的宽高比。
休息一切都无所谓。
回答你的问题 - 保持世界坐标。 它还可以简单地添加物理,光线计算,任何尺寸(1.8个单位而不是243个像素)