En Godot podemos clasificar nuestras escenas en grupos, esto nos permite una buena forma de organización y manipulación de componentes específicos durante nuestro juego.

Podemos hacer grupos mediante código y también desde el editor de Godot. Vamos con eso:


Asignar grupos desde el editor

Hacemos clic sobre la escena que queramos y buscamos la pestaña “Grupos” dentro de la sección “Nodo”, ubicada en la parte inferior del editor.

Colocamos un nombre y presionamos “Añadir”. El grupo se colocará en una lista, no tenemos límites para añadir nuevos. Si queremos eliminar un grupo, sólo hacemos clic en la papelera que se encuentra al lado del nombre.


Asignar grupos desde código (GDScript)

Podemos administrar los grupos de un nodo desde cualquier script, veamos un ejemplo:

Estando dentro del script de Node, le asignaremos un grupo dentro de una función. La recomendada en _ready():

extends Node

func _ready():
	add_to_group("Niveles")

Ya agregamos el grupo, es más fácil que usar el editor. Podemos comprobar que formamos parte del grupo con una línea:

if self.is_in_group("Niveles"):
		print("Hola Mundo")

Cuando usamos self nos estamos refiriendo al mismo nodo que esta ejecutando el script. Con is_in_group() podemos preguntar si nos encontramos en el grupo indicado por el parámetro, devolverá un True o un False.

También podemos poner un nodo externo al Node, se hace así:

$Jugador.add_to_group("Jugadores")

Es lo mismo que con self, sólo que usamos la dirección de otro nodo.

Para remover un nodo con código, usamos:

$Jugador.remove_from_group("Jugadores")

Obtener nodos dentro de un grupo

Es probable que necesitemos saber que nodos se encuentran dentro de un determinado grupo. Para eso podemos hacer lo siguiente:

func _ready():
	$Jugador.add_to_group("Jugadores")
	print(get_tree().get_nodes_in_group("Jugadores"))

Primero usamos el get_tree() para entrar en el árbol de recursos, después indicamos el grupo en el que queremos buscar todos los nodos usando get_nodes_in_group().

En este caso sólo vamos a obtener el nodo que acabamos de añadir: KinematicBody2D.


César León

Nací en el mes de mayo. En 2014 empecé a estudiar sobre el desarrollo de vídeojuegos, un conflicto de mi vida fue descargar software privado sin pagar licencias. Godot formó un puente entre mi y el Software Libre, probé GNU/Linux y termine aceptando el sentimiento ético de la FSF. Feliz de desarrollar juegos Indie con Software Libre :').