Cómo llamar funciones desde el AnimationPlayer en Godot

por Dic 16, 2019Aprende, Godot Engine0 Comentarios

Vengo a decir que desarrollar la demostración de Kings and Pigs me ayudó a entender algunas cosas. Entre ellas, descubrí cómo podía llamar a una determinada función mientras se ejecuta una animación. Sí, en muchos casos le dije adiós al “yield()” o la señal “animación finalizada”. Hacer esto es muy fácil, se los enseñaré con un ejemplo práctico y uno básico.

Empecemos por lo básico: tenemos un nodo principal ColorRect con un script que le ajusta un color desconocido cuando llamamos a la función “red()”. De resto su color es blanco. El hijo de este nodo es un AnimationPlayer que durante unos segundos cambiará su color usando la propiedad “Color” y después llamará a dos de sus coloridas funciones.

Preparemos la animación: en el primer keyframe asignaremos en la propiedad de color un blanco, a los 0.5 segundos cambiamos la misma propiedad por un Negro y después de otros 0.5 segundos le damos clic a “Añadir Pista > Nueva Llamada a métodos”: se nos abrirá el árbol de la escena con todos los nodos disponibles, el que nos interesa es el (único) ColorRect. Después de seleccionarlo hagan clic sobre el segundo 1 de la animación e inserten una llave. Ahora tienen que escribir el nombre de la función que van a cambiar, red. Se creará un punto y eso es todo… sin embargo les prometí dos funciones diferentes, así que inserten una nueva llave en el segundo 1.5 y busquen la función “queue_free()”, esa la tienen todos los nodos y no hace falta tener un script dentro del nodo para llamarla.

Reproduzcan la escena marcando el “Autostart” en la pestaña de animación y vean como se cambian los colores y después se elimina el nodo ColorRect.

Ahora verán un ejemplo “práctico” dentro del proyecto Kings and Pigs. Uno de mis cerdos tiene la capacidad de lanzar una caja, así que necesita una animación al momento de recoger y lanzar. Cuando recoge la caja no la está manteniendo en su cabeza en realidad, sino que es una simple imagen. Para que el jugador tenga la sensación de que está lanzando la caja, justo en el frame donde desaparece el sprite de la caja llamo a una función que “activa” el script de la caja en el enemigo, como pueden ver.

¡Comenta! 👇️

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *