我对所有不同的坐标系感到非常困惑。 我正在使用 LibGDX 和 Tiled。 这些都有自己的坐标系(排序)。
- LibGDX 屏幕
- 平铺 map
- UI相机
- 正交平铺 map 相机
- UIStage
- 平铺 map 舞台
概念太多,我无法再在头脑中理解它们在复杂场景中如何相互影响,例如
- 屏幕尺寸与平铺 map 尺寸不同
- 调整屏幕大小时。
有人可以解释一下吗?
非常感谢!
最佳答案
在 2D 游戏中,您实际上只需要考虑正交相机的坐标系。使用特定相机的组合
矩阵绘制的任何内容都适合屏幕的矩形(如果正确设置相机,它就不会失真)。
LibGDX 提供了 Viewport 类来帮助设置您的相机。您可以将它们视为摄像机管理器,可以调整摄像机的大小以满足您想要的布置。您可以使用您想要看到的游戏世界所需大小的“窗口”来实例化它们。唯一需要考虑实际屏幕尺寸的地方是在 resize
方法中,您可以将尺寸传递给 Viewport 类,并让它为您处理相机的大小,这样场景就不会扭曲。
您可能有不止一台相机。通常,您的 UI 将有自己的 UI,而游戏世界将有另一个(因为您希望它在世界中移动)。
在输入时,原始 X 和 Y 以屏幕像素坐标给出,但您只需将这些坐标传递给 camera.unproject
方法即可将它们转换为与您的坐标相同的坐标游戏世界。
我不使用图 block ,因此无法具体说明,但应该适用相同的原则。
关于java - 了解不同的坐标系,Tiled、Stage、Screen、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58362467/