Prendiamo una situazione in cui hai un gioco di ruolo con incantesimi e ogni animazione di incantesimi ha un numero diverso di fotogrammi e hanno requisiti molto diversi per gli effetti sonori. Supponiamo che ogni incantesimo abbia solo 1 animazione continua associata (al contrario di più pezzi modulari che sono usati per formare un'animazione completa) sui vecchi giochi di Final Fantasy a 16 bit.
L'unico modo in cui mi viene in mente per assicurarmi che i suoni e le animazioni si sincronizzino è:
- Ottieni il numero di fotogrammi di un'animazione.
- Prendi il tempo tra ogni fotogramma dell'animazione. (se è 30 fps, allora è 1/30 di secondo per fotogramma.)
- Quindi crea un file audio della stessa lunghezza dell'animazione.
Ciò significa che se un'animazione dura 5 secondi, a 30 fps, con un totale di 150 fotogrammi, anche il file audio sarà lungo 5 secondi. Se l'animazione dovrebbe avere un suono di "impatto" sul 30 ° fotogramma, ciò significa che il file audio includerà il suono di impatto al segno di 1,0 secondi.
Alla fine, iniziamo l'animazione e l'effetto sonoro esattamente allo stesso tempo e speriamo che i frame e il suono si sincronizzino.
Sembra che ciò possa creare problemi quando i fotogrammi vengono saltati o succede qualcosa durante l'animazione e il suono viene riprodotto leggermente troppo presto o troppo tardi e causerà la disconnessione del suono e dell'animazione. È questo l'approccio migliore o di solito c'è un modo migliore che non vedo?
La risposta non deve necessariamente essere specifica per Cocos2D se è concettuale, ma se esiste una soluzione specifica per Cocos2d, mi piacerebbe ascoltarla.
EDIT: Mi rendo anche conto che con questo metodo, se ci capita di entrare e adattare il numero di fotogrammi o i tempi dell'animazione in seguito, DEVO anche tornare indietro e cambiare il file audio. Sembra una terribile causa di errore umano (dimenticando di aggiornare i file audio dopo il cambio dell'animazione). Spero che ci siano metodi migliori là fuori.