Ich versuche, einige Animationen in LibGDX zu spiegeln, aber weil sie von unterschiedlicher Breite sind, spielt die Animation seltsam. Hier ist das Problem:Flip-Bild mit unterschiedlicher Größe Breite weichen Übergang
(der rote Punkt markiert den X/Y {0,0} Koordinate) Wie Sie sehen können, wenn die Animation "links" spielt, wenn Sie schlagen, die Die Füße beginnen weit hinterher, als es war, aber wenn Sie richtig schlagen, spielen die Animationen gut, weil der Ursprung beider Animationen die linke Ecke ist, also ist der Übergang glatt.
Die einzige Möglichkeit, das zu erreichen, was ich möchte, ist zu sehen, welche Animation gerade läuft, und die Koordinaten entsprechend anzupassen.
Dies ist der Code:
public static float draw(Batch batch, Animation animation, float animationState,
float delta,
int posX, int posY, boolean flip) {
animationState += delta;
TextureRegion r = animation.getKeyFrame(animationState, true);
float width = r.getRegionWidth() * SCALE;
float height = r.getRegionHeight() * SCALE;
if (flip) {
batch.draw(r, posX + width, posY, -width, height);
} else {
batch.draw(r, posX, posY, width, height);
}
return animationState;
}
Jeder Vorschlag ist willkommen, wie man diesen Ansatz.
Danke. Ich habe versucht, den UrsprungX zu setzen, aber ich konnte es nicht sehr gut arbeiten. Ich hatte einige Ergebnisse mit einer statischen Breite (die Breite, wenn das Zeichen im Leerlauf ist) und versuchen, die anderen Sprites auf die Mitte davon einzustellen, aber einige Animationen rendern OK und andere außerhalb der Mitte. Ich werde versuchen, alle Sprites auf die gleiche Breite zu setzen, wie du gesagt hast, aber es gibt 65 insgesamt. – Jh62
Sie haben versucht, UrsprungX und HerkunftY, richtig? Nicht sicher, dass es mit der Einstellung nur eines Wertes arbeiten kann ... – MilanG
Ja. Wie Sie hier sehen können [link] (http://i.imgur.com/dgowc3z.png), sind die Füße, was Ihnen das Gefühl eines Übergangs zwischen Bildern vermittelt, von Bild zu Bild immer außermittig und es gibt keinen Weg dazu Zentriere es nur mit einem Wert. Ich habe verschiedene Möglichkeiten ausprobiert (sogar alle Frames haben die gleiche Breite/Größe) und wenn ich eine Animation repariere, wird andere dadurch kaputt gemacht. Ich denke, die bessere Lösung ist es, jeden Frame von Hand zu versetzen, was ich nicht gerne mache :( – Jh62