Diferenças do sistema de coordenadas da libgdx entre renderização e entrada de toque
Eu tenho uma tela (BaseScreen implementa a interface de tela) que processa uma imagem PNG. Ao clicar na tela, ele move o personagem para a posição tocada (para fins de teste).
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"));
}
.
.
}
Durante a renderização da tela, se o usuário tocar na tela, eu pego as coordenadas do toque e as uso para renderizar a imagem do personagem.
@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);
}
O problema são as coordenadas para desenhar o início da imagem a partir da posição inferior esquerda (como observado no LibGDX Wiki) e as coordenadas para a entrada de toque começam no canto superior esquerdo. Então, o problema que estou tendo é que eu clico no canto inferior direito, ele move a imagem para o canto superior direito. Minhas coordenadas podem ser X 675 Y 13, que ao toque estariam perto do topo da tela. Mas o personagem aparece na parte inferior, pois as coordenadas começam do canto inferior esquerdo.
Porque é que? Por que os sistemas de coordenadas são invertidos? Estou usando os objetos errados para determinar isso?