Prenons une situation où vous avez un RPG avec des sorts et chaque animation de sorts a un nombre différent d'images et leurs exigences en matière d'effets sonores sont très différentes. Supposons que chaque sort n'ait qu'une seule animation continue qui lui est associée (par opposition à plusieurs pièces modulaires qui sont utilisées pour former une animation complète) ala les anciens jeux Final Fantasy 16 bits.
La seule façon dont je peux penser afin de m'assurer que la synchronisation des sons et des animations est de:
- Obtenez le nombre d'images d'une animation.
- Obtenez le temps entre chaque image de l'animation. (si c'est 30 ips, alors c'est 1 / 30ème de seconde par image.)
- Créez ensuite un fichier son exactement de la même longueur que l'animation.
Cela signifie donc que si une animation dure 5 secondes, s'exécutant à 30 ips, avec un total de 150 images, le fichier son sera également de 5 secondes. Si l'animation doit avoir un son "d'impact" sur la 30ème image, cela signifie que le fichier son inclura le son d'impact à la marque de 1,0 seconde.
À la fin, nous démarrons l'animation et l'effet sonore exactement en même temps et espérons que les images et le son se synchroniseront.
Cela peut sembler poser des problèmes lorsque des images sont sautées ou que quelque chose se produit pendant l'animation et que le son est joué un peu trop tôt ou trop tard, et entraînera la désynchronisation du son et de l'animation. Est-ce la meilleure approche ou existe-t-il généralement une meilleure façon que je ne vois tout simplement pas?
La réponse ne doit pas nécessairement être pour Cocos2D spécifiquement si elle est conceptuelle, mais s'il existe une solution spécifique pour cocos2d, j'aimerais l'entendre.
EDIT: Je réalise aussi qu'avec cette méthode, si nous entrons et ajustons le nombre d'images ou le timing de l'animation plus tard, nous devons également revenir en arrière et changer le fichier son. Cela ressemble à une terrible cause d'erreur humaine (oublier de mettre à jour les fichiers audio après le changement d'animation.) J'espère qu'il existe de meilleures méthodes.