Wie kann ich eine Textur (Bild) ziehen, ohne dass sie springt und sich auf den Mauszeiger zentriert (was habe ich unten in meinem Code)?Ziehen einer Textur (ohne Sprung)
Wenn ich auf die Textur klicke, sollte nichts passieren, und wenn ich ziehe, sollte der Mauszeiger an Ort und Stelle bleiben (relativ zu den Rändern der Textur).
Beispiel: https://s31.postimg.org/ojapwbj6j/Untitled_1.jpg
SpriteBatch batch;
Texture texture;
OrthographicCamera camera;
Vector3 spritePosition = new Vector3();
float offsetX, offsetY;
Vector3 input;
@Override
public void create() {
batch = new SpriteBatch();
texture = new Texture("badlogic.jpg");
camera = new OrthographicCamera();
camera.setToOrtho(false);
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(texture, spritePosition.x, spritePosition.y);
batch.end();
if (Gdx.input.justTouched()){
int x1 = Gdx.input.getX();
int y1 = Gdx.input.getY();
input = new Vector3(x1, y1, 0);
camera.unproject(input);
offsetX = x1 - spritePosition.x;
offsetY = y1 - spritePosition.y;
}
if (Gdx.input.isTouched()) {
spritePosition.set(Gdx.input.getX() - offsetX, Gdx.input.getY() - offsetY, 0);
}
}
Ich habe meinen Code entsprechend Ihrer Antwort bearbeitet. Aber ich bekomme das halbe Ergebnis :) Bitte überprüfen Sie diese aktualisierte gif: https://s31.postimg.org/lg8nu0u2z/Animation.gif – Beckham
Die y-Achse ist invertiert, weil das physikalische Koordinatensystem unterscheidet sich von den logischen Koordinaten (one's y -Down und das andere ist y-up). Verwenden Sie entweder camera.unproject (das sollte es beheben) oder subtrahieren Sie die y-Position von der Höhe des Bildschirms, um es effektiv zu invertieren. –