这是一个示例代码,对我而言无法正常运行,我做错了什么吗?
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
我想做的就是将纹理移动到要触摸/移动的输入位置。
最佳答案
屏幕坐标不一定与模型空间坐标相同。您的相机定义是什么样的? (因为它定义了模型空间到屏幕的映射。)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
关于java - libGDX spiriteBatch.draw()不在正确的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7881578/