- Las señales en Godot engine son una forma de comunicación entre los nodos, que permite que un nodo emita un mensaje cuando ocurre un evento específico y que otros nodos lo reciban y actúen en consecuencia. Por ejemplo, si tenemos un nodo que representa un botón y otro que representa una puerta, podemos conectar la señal
pressed
del botón con la funciónopen
de la puerta, de modo que cuando el usuario presione el botón, la puerta se abra automáticamente. Las señales son muy útiles para crear interacciones dinámicas y complejas entre los elementos de nuestro juego, sin tener que acceder directamente a sus propiedades o métodos.
Los tipos de señales en Godot son los siguientes:
- Señales integradas: son las que vienen definidas por el propio motor de Godot y que se activan cuando ocurre algún evento relacionado con el nodo que las emite. Por ejemplo, la señal
button_down
se emite cuando se presiona un botón, la señalmouse_entered
se emite cuando el cursor entra en el área de un nodo, la señalbody_entered
se emite cuando un cuerpo físico entra en contacto con otro, etc. Estas señales se pueden conectar desde el editor o desde el código, usando el métodoconnect
. Las señales integradas sirven para facilitar la comunicación entre los nodos y la lógica del juego.- Algunas de las señales integradas más comunes y para qué sirven son:
mouse_entered
ymouse_exited
: se emiten cuando el cursor entra o sale del área de un nodo, respectivamente. Sirven para detectar la posición del cursor y cambiar el aspecto o el comportamiento del nodo.body_entered
ybody_exited
: se emiten cuando un cuerpo físico entra o sale en contacto con otro, respectivamente. Sirven para detectar las colisiones entre los objetos del juego y aplicar efectos como daño, rebote, sonido, etc¹.animation_started
yanimation_finished
: se emiten cuando una animación empieza o termina, respectivamente. Sirven para controlar el flujo de las animaciones y ejecutar acciones al inicio o al final de las mismas¹.ready
: se emite cuando un nodo está listo para funcionar, es decir, cuando se ha cargado en la escena y ha establecido sus propiedades iniciales. Sirve para inicializar el estado o la lógica del nodo¹.tree_entered
ytree_exited
: se emiten cuando un nodo entra o sale del árbol de escena, respectivamente. Sirven para realizar acciones cuando un nodo se añade o se elimina de la escena, como por ejemplo, liberar recursos o desconectar señales¹.- Estas son solo algunas de las señales integradas que existen en Godot. Cada tipo de nodo tiene sus propias señales integradas, que se pueden consultar en la [referencia de clase] de Godot. Además, se pueden conectar desde el editor o desde el código, usando el método
connect
¹. Las señales integradas sirven para facilitar la comunicación entre los nodos y la lógica del juego.
- Señales personalizadas: son las que creamos nosotros mismos para emitir mensajes específicos desde nuestros nodos. Por ejemplo, podemos crear una señal
game_over
que se emita cuando el jugador pierda todas sus vidas, una señalenemy_killed
que se emita cuando eliminemos a un enemigo, una señallevel_completed
que se emita cuando terminemos un nivel, etc. Estas señales se pueden crear usando la palabra clavesignal
en el código o desde el editor, usando el botón+
en la pestaña de nodos. Las señales personalizadas sirven para crear eventos personalizados que se adapten a las necesidades de nuestro juego. - Señales remotas: son las que nos permiten enviar y recibir mensajes entre escenas que no están directamente conectadas. Por ejemplo, podemos enviar una señal remota desde una escena que representa un personaje a otra escena que representa un enemigo, sin tener que acceder a sus nodos directamente. Estas señales se pueden usar con los métodos
rpc
yrset
, que son parte del sistema de red de Godot. Las señales remotas sirven para sincronizar el estado y la lógica de diferentes escenas en un juego multijugador o distribuido. button_down
ybutton_up
: se emiten cuando se presiona o se suelta un botón, respectivamente. Sirven para detectar la interacción del usuario con los botones de la interfaz gráfica.
Deja un comentario