了解不同的坐标系,Tiled, Stage, Screen,
Understanding different coordinate systems, Tiled, Stage, Screen,
我对所有不同的坐标系感到很困惑。
我正在使用 LibGDX 和 Tiled。
这些都有自己的坐标系(sortof)。
- LibGDX 屏幕
- 平铺地图
- UI相机
- 正交 TiledMapCamera
- UIStage
- TiledMapStage
概念太多了,我已经无法理解它们在复杂场景中如何相互影响,比如
- 屏幕尺寸与平铺地图尺寸不同
- 调整屏幕大小时。
有人可以解释一下吗?
非常感谢!
在2D游戏中,你真的只需要考虑正交相机的坐标系。用某个相机的 combined
矩阵绘制的任何东西都适合屏幕的矩形(如果正确设置相机,它不会失真)。
LibGDX 提供视口 classes 以帮助设置您的相机。您可以将它们视为相机管理器,它们将调整相机的大小以满足您想要的安排。您可以使用想要在游戏世界中看到的所需大小 "window" 来实例化它们。唯一需要考虑实际屏幕尺寸的地方是 resize
方法,您将尺寸传递给 Viewport class 并让它为您调整相机尺寸,这样场景就不会被扭曲了。
您可能拥有不止一台相机。通常你的 UI 会有自己的,游戏世界会有另一个(因为你希望它在世界中移动)。
输入时,原始 X 和 Y 以屏幕像素坐标给出,但您只需将这些坐标传递给 camera.unproject
方法,将它们转换为与您的游戏世界相同的坐标。
我不使用磁贴,所以无法具体说明,但应该适用相同的原则。
我对所有不同的坐标系感到很困惑。 我正在使用 LibGDX 和 Tiled。 这些都有自己的坐标系(sortof)。
- LibGDX 屏幕
- 平铺地图
- UI相机
- 正交 TiledMapCamera
- UIStage
- TiledMapStage
概念太多了,我已经无法理解它们在复杂场景中如何相互影响,比如
- 屏幕尺寸与平铺地图尺寸不同
- 调整屏幕大小时。
有人可以解释一下吗?
非常感谢!
在2D游戏中,你真的只需要考虑正交相机的坐标系。用某个相机的 combined
矩阵绘制的任何东西都适合屏幕的矩形(如果正确设置相机,它不会失真)。
LibGDX 提供视口 classes 以帮助设置您的相机。您可以将它们视为相机管理器,它们将调整相机的大小以满足您想要的安排。您可以使用想要在游戏世界中看到的所需大小 "window" 来实例化它们。唯一需要考虑实际屏幕尺寸的地方是 resize
方法,您将尺寸传递给 Viewport class 并让它为您调整相机尺寸,这样场景就不会被扭曲了。
您可能拥有不止一台相机。通常你的 UI 会有自己的,游戏世界会有另一个(因为你希望它在世界中移动)。
输入时,原始 X 和 Y 以屏幕像素坐标给出,但您只需将这些坐标传递给 camera.unproject
方法,将它们转换为与您的游戏世界相同的坐标。
我不使用磁贴,所以无法具体说明,但应该适用相同的原则。