Ok yo lo hice de la siguiente forma, no se si es la mejor práctica pero aquí va mi solución.
Yo cree las 6 animaciones y 6 controladores. Cada controlador con su respectiva animación.
En mi prefab del caramelo le agregué el componente animator y mi idea era cambiar por código el controlador de cada respectivo caramelo.
.
De esa forma cambié el controlador, se reproduce la animación y luego elimino los caramelos.
Se me hizo un poco complejo detectar cuando la animación haya finalizado, así que decidí hacer una función de tipo Corrutina y adicional ponerle unos segundos de espera antes de borrar los caramelos.
.
De esa forma se logra el efecto deseado, pero como dice el profe hay muchas más. Me gustaría indagar más para detectar el estado de finalización de una animación. Conseguí esto por los forums de unity, más sin embargo no me funcionó. Check if animation has finished
.
Aquí dejo la función que hice:
private IEnumerator EnableAnimation(GameObject candy){
candy.GetComponent<Animator>().enabled = true;
RuntimeAnimatorController newController = (RuntimeAnimatorController)Resources.Load("Animations/" + candy.GetComponent<Candy>().id);
candy.GetComponent<Animator>().runtimeAnimatorController = newController;
yield return new WaitForSeconds(0.8f);
candy.GetComponent<Animator>().enabled = false;
candy.GetComponent<SpriteRenderer>().sprite = null;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?