Ich habe einen Bildschirm (BaseScreen implementiert die Bildschirmoberfläche), die ein PNG-Bild rendert. Mit einem Klick auf den Bildschirm bewegt er das Zeichen in die berührte Position (zu Testzwecken).libgdx Koordinatensystem Unterschiede zwischen Rendering und Touch-Eingabe
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"));
}
.
.
}
Während des Bildschirms Rendering, wenn der Benutzer den Bildschirm berührt, greifen I die Koordinaten der Berührung, und verwenden dann diese das Zeichenbild zu rendern.
@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);
}
Die Ausgabe sind, die Koordinaten zum Zeichnen des Bildstarts von der linken unteren Position, und die Koordinaten (wie in der Libgdx Wiki angegeben) für die Berührungseingabe von der oberen linken Ecke beginnt. Das Problem, das ich habe, ist, dass ich unten rechts klicke, es bewegt das Bild nach rechts oben. Meine Koordinaten können X 675 Y 13 sein, was bei Berührung nahe dem oberen Rand des Bildschirms sein würde. Der Charakter zeigt sich jedoch unten, da die Koordinaten von links unten beginnen.
Warum ist was? Warum werden die Koordinatensysteme umgekehrt? Benutze ich die falschen Objekte, um das zu bestimmen?
Es gibt viele solche Fragen gibt, und viele Antworten sagen, dass Sie camera.unproject tun müssen, aber ich, wenn ich mit Libgdx Start war ich wusste einfach nicht, was dann zu tun (dh verwenden die neue Vektorkoordinaten). Dies ist die einzige Antwort, die ich damals gefunden habe, die dies angibt, so viele, vielen Dank, großartige Antwort! –