Qual è il modo migliore per creare animazioni durante lo sviluppo di Android?


10

Sto cercando di creare il mio primo gioco per Android e attualmente sto cercando di capire (con qualcuno che farà i disegni e un altro programmatore) qual è il modo migliore per creare l'animazione. (Animazioni come un personaggio in movimento, ecc.)

Inizialmente, la designer ha detto che poteva disegnare oggetti / personaggi e animarli con il flash in modo da non dover disegnare ogni singolo fotogramma di un'azione. L'altro programmatore e io non conosciamo troppo Flash, quindi ho suggerito di estrarre tutte le immagini dall'animazione Flash e di farle apparire una dopo l'altra all'avvio dell'animazione.

Ha detto che finirebbe per richiedere troppe risorse sulla CPU e tendo ad essere d'accordo, ma non vedo davvero come dovremmo fare animazioni fluide senza che sia troppo duro sull'hardware e, se possibile, non avere il designer disegna ogni singolo fotogramma su Adobe Illustrator.

Un esperto sviluppatore di giochi Android può aiutarmi a bilanciare questo in modo da poter passare ad altre parti del gioco in quanto non ho idea di quale sia il modo migliore per creare animazioni.

Risposte:


12

Se stai considerando l'animazione 2D, renderizzare uno sprite e poi un altro non sarà un problema per il dispositivo (a meno che i tuoi sprite non siano enormi).

Di seguito è riportato un tipico sprite di animazione che è il primo che ho trovato con un po 'di ricerca. Questa è una tecnica comunemente usata e ci sono molti siti Web che offrono fogli di calcolo gratuiti (e comunque controlla sempre la licenza).

Fonte immagine: [qui] (http://gaminggroundzero.com/?page_id=31)

Immagine + fonte dell'autore: qui

Il verde è impostato come colore trasparente dell'immagine in modo da non avere aree di colore indesiderate. Per giocare, dovrai conoscere le coordinate di ciascuna animazione nella sequenza animata nel foglio di calcolo.

Per Android, possiamo dare un'occhiata a un motore di gioco open source di Chris Pruett (precedentemente di Google) chiamato Replica Island . Il codice sorgente è disponibile e possiamo guardare i suoi SpriteAnimation.java e SpriteComponent.java .

A SpriteAnimationviene semplicemente creato con un numero di frame e un ID univoco e ogni attore nel gioco può avere più animazioni. È SpriteAnimationpossibile assegnare un numero di AnimationFrames, ciascuno con una durata in millisecondi. Questo significa che diverse animazioni possono essere scambiate dentro e fuori a seconda che il personaggio si muova o attacchi ecc. (Vedi dentro AnimationComponent.playAnimation(int id)).

Ogni iterazione del loop di gioco, viene chiamata AnimationFrame's getFrame(float time)', e controlla quanto tempo è trascorso dall'ultima iterazione del loop principale e decide quale frame giocare successivamente, quindi restituisce il frame per essere inviato al sistema di rendering. Ciò consente di saltare i fotogrammi dell'animazione se l'animazione procede troppo lentamente.

Spero che questo esempio funzioni e puoi vederlo usato nel gioco reale sul Marketplace Android qui .


Grazie mille per la risposta ben spiegata e dettagliata! Vedrò come posso adattare questo al mio gioco. Questo è molto utile!
Adam Smith,

@AdamSmith: usare sprite-sheet in questo modo è il modo migliore per le animazioni 2D. Non importa se il tuo artista crea le animazioni in flash o in un altro programma, a patto che possa esportare l'animazione in immagini che puoi poi impacchettare in un foglio di sprite
bummzack,

@bummzack Questo è il tipo di risposta che speravo, grazie!
Adam Smith,

@AdamSmith va anche notato (per evitare confusione) che Replica Island in realtà non usa i fogli sprite, ma usa singoli file. La discussione del motivo per cui gli spritesheet sono utili può essere trovata qui e (con maggiori dettagli) qui .
Martin Foot,

@Martin Foot, hai dato una spiegazione molto bella. Ma ho ancora confusione, sto avendo 10-15 tipi di animazione e ho frame di ciascuno di essi con le dimensioni di 320x480 che puoi dire un'animazione a schermo intero. Quindi cosa mi suggerisci che dovrei ottenere per SpriteSheet o il file sorgente dell'animazione singola? Sono troppo confuso su cosa usare. Ti prego gentilmente di suggerirmi il modo migliore .. Grazie mille ....
Scorpion,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.