libGDX spiriteBatch.draw()没有定位在正确的位置

时间:2011-10-24 20:28:28

标签: java android libgdx

以下示例代码对我来说无法正常运行,我做错了吗?

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

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

1 个答案:

答案 0 :(得分: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