以下示例代码对我来说无法正常运行,我做错了吗?
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
我要做的只是将纹理移动到我正在触摸/移动的输入位置。
答案 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