Tema 9. Godot Engine. Reproducimos una animación.
En temas anteriores hemos creado diferentes animaciones para nuestro personaje. Ahora vamos a animarlo en el escenario en función de las teclas que pulsemos.
En el tema anterior habíamos definido el siguiente código en el script:
func _process(delta): if Input.is_action_pressed(«Personaje_LEFT»): print(«Personaje LEFT») if Input.is_action_pressed(«Personaje_RIGHT»): print(«Personaje RIGHT») |
Ahora modificaremos el print por código que nos permitirá animar al personaje.
$Animation.play(“nombre de animación”) es la instrucción que nos permite hacerlo.
Fijémonos como tal y como vamos escribiendo ya nos van apareciendo las instrucciones de forma automática en nuestro editor. Por lo tanto nuestro código quedará así.
func _process(delta): if Input.is_action_pressed(«Personaje_LEFT»): $AnimationPlayer.play(«Left») if Input.is_action_pressed(«Personaje_RIGHT»): $AnimationPlayer.play(«Right») |
Ahora probaremos a ejecutar el código y el personaje aparece por defecto moviéndose hacia la derecha en función de lo que hayamos seleccionado en el node Animation propiedad: Current Animation
Ahora el personaje aparece “parado” y mirando hacia la derecha.
Si pulsamos la tecla ‘z’ o tecla flecha izquierda, entonces el personaje cambiará de dirección:
Si mantenemos las teclas pulsada observaremos que el personaje se anima (movimiento derecha o izquierda en función de la tecla pulsada) de forma constante.
Ojo, si deseamos que el personaje se anime nada más iniciamos el programa y dicha animación no se pare, entonces deberemos ir a cada una de las animaciones del nodo AnimationPlayer, Left y Right y activar el loop . Recordemos que el botón loop son las dobles flechas que están a la parte derecha del editor.
Ahora observaremos que la animación tarda un poco en cambiar de izquierda a derecha porque la marca (check_box) flip_h que está debajo del personaje se encuentra situada al final de los frames en el 0.4
Tendremos que desplazar el check de la animación derecha y situarlo al principio de los frames:
Por lo tanto ambas animaciones quedarán así:
LEFT
RIGHT
Fijarse como el check flip_h que hay debajo del personaje lo hemos desplazado al principio del frame 0.
ES POSIBLE USAR UN NODO AnimatedSprite con AnimationPlayer |
Creamos el nodo AnimatedSprite y creamos sus respectivas animaciones, en este ejemplo, idle y run
Creamos un nodo hijo de AnimatedSprite: AnimationPlayer
Ahora en AnimationPlayer, tenemos que ir creando cada animación que tenemos en AnimatedSprite. Seleccionamos AnimatedSprite, y a la vez hacemos un click en el menú inferior Animación.
Ahora en las propiedades de AnimatedSprite seleccionamos qué Animación queremos añadir al AnimationPlayer. Si queremos usar idle, seleccionamos idle y posteriormente hacemos un click en la llave Animation: idle
Y a partir de ahora ya podemos ir añadiendo los frames en el AnimationPlayer haciendo click en la llave de cada Frame que vamos seleccionando:
Aquí vemos el resultado con idle: