Aunque Internet rebosa de tutoriales de Unity, de vez en cuando hay detalles que cuestan lo indecible encontrar la forma de usarlos. Por ejemplo, los Animation Events. Ni siquiera en los foros conseguí que alguien me explicase cómo funcionaban.
El caso es que los Animation Events son eventos que se agregan a las animaciones, en principio muy útiles, pero no lograba aplicarlos correctamente. Un Animation Event necesita de una función receptora, que por supuesto, debe estar en un script asignado a un GameObject. Típico. O sea, que no encontraba una forma de que la función receptora fuese genérica y no específica de un objeto en la escena.
A ver si me explico. Mi idea era detectar cuando la animación de un ataque hubiese terminado, para indicarle al personaje (jugador o NPC) que ya puede continuar con la acción siguiente en la cola. Quizás por incapacidad mía, pero no logré pasarle a la función receptora, quién era el GameObject padre del esqueleto que había concluido su animación. Solo quedaba la variante opuesta: cada personaje tendría su script con la función receptora (lo adjunté al prefab que contiene el esqueleto) y la clase del script tiene un miembro público al que se le asigna el GameObject padre. Lleva algo de trabajo, porque hay que repetir el proceso para cada personaje en la escena, pero no veo otra forma de hacerlo. Y por lo menos, así funciona.
Ahora el sistema de combate se parece un poco más a lo que debe ser, al menos en la lucha cuerpo a cuerpo. La animación para armas de rango no es la correcta y requiere ajustes, pero eso sí creo que se escapa de mis capacidades.
El caso es que los Animation Events son eventos que se agregan a las animaciones, en principio muy útiles, pero no lograba aplicarlos correctamente. Un Animation Event necesita de una función receptora, que por supuesto, debe estar en un script asignado a un GameObject. Típico. O sea, que no encontraba una forma de que la función receptora fuese genérica y no específica de un objeto en la escena.
A ver si me explico. Mi idea era detectar cuando la animación de un ataque hubiese terminado, para indicarle al personaje (jugador o NPC) que ya puede continuar con la acción siguiente en la cola. Quizás por incapacidad mía, pero no logré pasarle a la función receptora, quién era el GameObject padre del esqueleto que había concluido su animación. Solo quedaba la variante opuesta: cada personaje tendría su script con la función receptora (lo adjunté al prefab que contiene el esqueleto) y la clase del script tiene un miembro público al que se le asigna el GameObject padre. Lleva algo de trabajo, porque hay que repetir el proceso para cada personaje en la escena, pero no veo otra forma de hacerlo. Y por lo menos, así funciona.
Ahora el sistema de combate se parece un poco más a lo que debe ser, al menos en la lucha cuerpo a cuerpo. La animación para armas de rango no es la correcta y requiere ajustes, pero eso sí creo que se escapa de mis capacidades.
Comentarios
Publicar un comentario