更改LibGDX中的坐标系(Java)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

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,你可能会失败
  • 默认坐标系是OpenGL中的右手坐标系,带有y向上。你当然可以用一些矩阵魔法轻松地改变它。

在我们使用y-down的libgdx中,只有两个地方是:

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

再次,您可以使用相机或矩阵运算的一小部分轻松地将使用的坐标系更改为任何您想要的值。

用户回答回答于

正如badlogic在上面所说的那样,如果你使用的是TextureAtlas(带有TextureRegions),那么除了摄像机的工作之外,你需要翻转它们,就像badlogic说的那样。如果您使用的是TextureAtlas,则可以在加载图集后立即使用此代码:

String textureFile = "data/textures.txt";  
atlas = new TextureAtlas(Gdx.files.internal(textureFile), Gdx.files.internal("data"));  
// Let's flip all the regions.  Required for y=0 is TOP
Array<AtlasRegion> tr = atlas.getRegions();      
for (int i = 0; i < tr.size; i++) {
  TextureRegion t = tr.get(i);
  t.flip(false, true);
}

扫码关注云+社区