java - 在 LibGDX (Java) 中更改坐标系

标签 java 2d sprite coordinate-systems libgdx

LibGDX 有一个坐标系,其中 (0,0) 位于左下角。 (如这张图片:http://i.stack.imgur.com/jVrJ0.png)

这让我头疼不已,主要是因为我正在移植一个我已经用通常的坐标系(其中 0,0 位于左上角)制作的游戏。

我的问题:有什么简单的方法可以改变这个坐标系吗?

最佳答案

如果你使用相机(你应该这样做),改变坐标系非常简单:

camera= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

如果您使用 TextureRegions 和/或 TextureAtlas,除此之外您需要做的就是调用 region.flip(false, true)。

我们默认使用 y-up 的原因(您可以如上图所示轻松更改)如下:

  • 您的模拟代码很可能会使用带 y-up 的标准欧几里得坐标系
  • 如果你去 3D,你有 y-up
  • 默认坐标系是 OpenGL 中的右手坐标系,y 向上。当然,您可以通过一些矩阵魔法轻松改变这一点。

libgdx 中我们使用 y-down 的唯一两个地方是:

  • 像素图坐标(左上角原点,y-down)
  • 在窗口坐标中给出的触摸事件坐标(左上角原点,y-down)

同样,您可以使用相机或一点点矩阵数学轻松地将使用的坐标系更改为您想要的任何坐标系。

关于java - 在 LibGDX (Java) 中更改坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708379/

相关文章:

html - Canvas 中错误的矩形大小

algorithm - 2D 细节层次 (LOD) 算法

java - spring中的Model对象刷新页面时获取空值

javascript - Sprite 不在 Canvas 上绘制(Javascript)

c++ - Spritebatch 只绘制第一个 Sprite

java - 如何设置jetty runnier应用程序的WebAppContext?

java - 运行 YOURPROJECTNAME [编译] 时出错 : JAVA_HOME environment variable not defined IntelliJ 14 along with Maven

java - BluetoothSocket.getInputStream() 在 Activity 发生变化时导致 NullPointerException

java - 背包问题暴力算法时间复杂度巨大

c++ - 如何用 C++ 编写菱形方 block 算法?