LibGDX向下和向上是向下Gdx.input.getY()

时间:2014-04-17 22:40:43

标签: java libgdx

我确信这很简单。我正在大脑冻结。我一直在颠倒它,减去它,乘以它,加上它。无论向下和向下是什么上升。

if (Gdx.input.isButtonPressed(Buttons.LEFT)) s.drawCirc(c, Gdx.input.getX(), Gdx.input.getY(), 100, 100);

x轴很好,罪魁祸首是Gdx.input.getY()。当我向上移动手指时,它会上下移动。

我的圈子在中间排成一排,但是当我上升时,它会下降,当我下降时,它会上升。我想了解这里究竟发生了什么,以及为什么会发生这种情况。(当然还有如何修复它)

如果你需要知道c是我的相机,这是代码以防这是罪魁祸首

c = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

并在我使用的drawCirc方法中

shapeRenderer.setProjectionMatrix(c.combined);

2 个答案:

答案 0 :(得分:2)

这是因为用于输入的坐标系和摄像机使用的坐标系在y轴上彼此相反。理想情况下,在获取输入时,您希望将输入取消投影到摄像机,以便所有坐标都很好地对齐。您可以使用c.unproject(input)执行此操作。这是一个代码示例:

if (Gdx.input.isButtonPressed(Buttons.LEFT))
{
  Vector3 input = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
  cam.unproject(input);
  //Now you can use input.x and input.y, as opposed to Gdx.input.getX() and
  //Gdx.input.getY(), to draw the circle
  s.drawCirc(c, input.x, input.y, 100, 100);
}

答案 1 :(得分:1)

LibGDX使用另一个坐标系的OpenGL。

它使用从左到右,从下到上。

所以在OpenGL 0,0中意味着左下角。

使用 c = new OrthographicCamera(); c.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

第一个参数表示Y-Down

此处提供更多信息:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/OrthographicCamera.html

检查此链接以获取有关使用带有down-y的LibGDX的更多信息。 https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/YDownTest.java