我有一个呈现PNG图像的屏幕(BaseScreen实现了屏幕界面)。点击屏幕时,它将角色移动到触摸的位置(用于测试目的)。渲染和触摸输入之间的libgdx坐标系差异
public class DrawingSpriteScreen extends BaseScreen {
private Texture _sourceTexture = null;
float x = 0, y = 0;
@Override
public void create() {
_sourceTexture = new Texture(Gdx.files.internal("data/character.png"));
}
.
.
}
在渲染过程中的屏幕上,如果用户接触屏幕时,我抢了触摸的坐标,然后用这些来渲染人物形象。
@Override
public void render(float delta) {
if (Gdx.input.justTouched()) {
x = Gdx.input.getX();
y = Gdx.input.getY();
}
super.getGame().batch.draw(_sourceTexture, x, y);
}
问题对于从左下方位置绘制图像开始(如在LibGDX维基说明)的坐标和坐标触摸输入从左上角开始。所以我遇到的问题是我点击右下角,它将图像移到右上角。我的坐标可能是X 675 Y 13,触摸时会靠近屏幕的顶部。但角色显示在底部,因为坐标从左下角开始。
为什么是什么?为什么坐标系颠倒了?我是否使用错误的对象来确定这一点?
有很多这样的问题在那里,很多答案说,你需要做的camera.unproject的,但我当我与libGDX开始我根本不知道该怎么做,然后(即使用新的矢量坐标)。这是我当时发现的唯一答案,指出了这一点,非常感谢,很好的答案! – 2015-03-13 10:32:42