1

这是一个对我来说无法正常运行的示例代码,我做错了什么吗?

textureCharacter = new Texture(Gdx.files.internal("data/character1.png")); 

if (Gdx.input.isTouched()) {
    spriteBatch.draw(textureCharacter, Gdx.input.getX(), Gdx.input.getY());
}

当我在 X=5 和 Y=5 的位置(例如)触摸 SpiriteBatch 时,它会在 X 5 处绘制纹理,但 Y 是 Gdx.graphics.getHeight() - 5px ??? 通过向下移动输入 Y,纹理向上移动......

Gdx.input.getX() 和 Gdx.input.getY() 正在返回值:X=5, Y=5

我想要做的只是将纹理移动到我正在触摸/移动的输入位置。

4

1 回答 1

4

屏幕坐标不一定与模型空间坐标相同。你的相机定义是什么样的?(因为它定义了模型空间到屏幕的映射。)Gdx.intput.getX()调用返回屏幕空间中的一个点。

Y 轴(默认)在屏幕和 GL 空间中指向相反的方向。(在屏幕坐标中从屏幕顶部向下增长,在 GL 坐标中向屏幕顶部增长)。您可以修复您的相机以匹配屏幕坐标或将您的触摸坐标映射到 GL 坐标。

请参阅以下调用camera.unproject()https ://code.google.com/p/libgdx/source/browse/trunk/tests/gdx-tests/src/com/badlogic/gdx/tests/examples/MoveSpriteExample.java

于 2011-10-24T20:56:53.307 回答