Was ist der beste Weg, um Animationen bei der Android-Entwicklung zu erstellen?

10

Ich versuche, mein erstes Android-Spiel zu erstellen, und ich versuche derzeit herauszufinden (mit jemandem, der die Zeichnungen erstellt, und einem anderen Programmierer), wie Animationen am besten erstellt werden können. (Animationen wie ein sich bewegender Charakter usw.)

Zuerst sagte die Designerin, dass sie Objekte / Charaktere zeichnen und sie mit Blitz animieren könne, damit sie nicht jeden einzelnen Frame einer Aktion zeichnen müsse. Der andere Programmierer und ich kennen Flash nicht so gut, daher schlug ich vor, alle Bilder aus der Flash-Animation zu extrahieren und sie nacheinander erscheinen zu lassen, wenn die Animation gestartet werden soll.

Er sagte, dass dies zu viel Ressourcen für die CPU bedeuten würde, und ich stimme eher zu, aber ich sehe nicht wirklich ein, wie wir reibungslose Animationen erstellen sollen, ohne dass dies zu hart für die Hardware ist und wenn möglich nicht Der Designer zeichnet jeden einzelnen Frame in Adobe Illustrator.

Kann mir ein erfahrener Entwickler von Android-Spielen dabei helfen, dies auszugleichen, damit wir zu anderen Teilen des Spiels übergehen können, da ich keine Ahnung habe, wie Animationen am besten erstellt werden können.

Adam Smith
quelle

Antworten:

12

Wenn Sie eine 2D-Animation in Betracht ziehen, ist das Rendern eines Sprites und eines anderen für das Gerät kein Problem (es sei denn, Ihre Sprites sind riesig).

Unten ist ein typisches Animations-Sprite, das das erste ist, das ich mit ein wenig Suchen gefunden habe. Dies ist eine häufig verwendete Technik, und es gibt viele Websites, die kostenlose Spritesheets anbieten (und ansonsten immer die Lizenz überprüfen).

Bildquelle: [hier] (http://gaminggroundzero.com/?page_id=31)

Bild + Autorenquelle: hier

Das Grün wird als transparente Farbe des Bildes festgelegt, damit Sie keine unerwünschten Farbbereiche haben. Sie müssen die Koordinaten jeder Animation in der Animationssequenz im Spritesheet kennen, um sie abspielen zu können.

Für Android können wir uns eine Open-Source-Spiel-Engine von Chris Pruett (ehemals Google) namens Replica Island ansehen . Der Quellcode ist verfügbar, und wir können uns seine SpriteAnimation.java und SpriteComponent.java ansehen .

A SpriteAnimationwird einfach mit einer Frame-Anzahl und einer eindeutigen ID erstellt und jeder Akteur im Spiel kann mehrere Animationen haben. Dem SpriteAnimationkann eine Anzahl von AnimationFrames mit einer Dauer in Millisekunden zugewiesen werden. Dies bedeutet, dass verschiedene Animationen ein- und ausgewechselt werden können, je nachdem, ob sich der Charakter bewegt oder angreift usw. (siehe in AnimationComponent.playAnimation(int id)).

Bei jeder Iteration der Spielschleife wird das AnimationFrame's getFrame(float time)aufgerufen, und es wird überprüft, wie viel Zeit seit der letzten Iteration der Hauptschleife vergangen ist, und es wird entschieden, welcher Frame als nächstes abgespielt werden soll. Anschließend wird der Frame zurückgegeben, um an das Rendering-System gesendet zu werden. Dadurch können Animationsframes übersprungen werden, wenn die Animation zu langsam ist.

Ich hoffe, dieses Beispiel funktioniert und Sie können sehen, dass es im aktuellen Spiel auf dem Android Marketplace hier verwendet wird .

Martin Fuß
quelle
Vielen Dank für die gut erklärte und detaillierte Antwort! Ich werde sehen, wie ich das an mein Spiel anpassen kann. Das ist sehr hilfreich!
Adam Smith
@AdamSmith: Die Verwendung solcher Sprite-Sheets ist der beste Weg für 2D-Animationen. Es spielt keine Rolle, ob Ihr Künstler die Animationen in Flash oder einem anderen Programm erstellt, solange er die Animation in Bilder exportieren kann, die Sie dann in ein Sprite-Sheet
packen können
@bummzack Das ist die Art von Antwort, auf die ich gehofft habe, danke!
Adam Smith
@AdamSmith Es sollte auch beachtet werden (um Verwirrung zu vermeiden), dass Replica Island keine Sprite-Blätter verwendet, sondern einzelne Dateien. Eine Diskussion darüber, warum Spritesheets nützlich sind, finden Sie hier und (mit mehr Details) hier .
Martin Foot
@ Martin Foot, Sie haben eine sehr schöne Erklärung gegeben. Aber ich habe immer noch Verwirrung, ich habe 10-15 Arten von Animationen und ich habe Frames von jedem von ihnen mit der Größe von 320x480, was man als Vollbildanimation bezeichnen kann. Also, was schlagen Sie mir vor, das ich für SpriteSheet oder Single Animation Source File bekommen soll? Ich bin zu verwirrt, was ich verwenden soll. Bitte schlagen Sie mir den besten Weg vor .. Vielen Dank ....
Scorpion