Está en la página 1de 6

Nodos en Godot

La principal caracterstica de Godot es que puedes organizar todo con Nodos, Pero qu son los
Nodos?
Los nodos son los objetos que va a contener el juego, pueden ser visuales o no, eso va a depender que
lo que quieras hacer, pero como ejemplo, un Sprite es un Nodo visual y un Camera2D es no visual,
dado que la cmara en si, no es un objeto que puedas reconocer en el juego como un enemigo, el
personaje, el fondo, las plataformas etc....

Como organizar adecuadamente


Una duda que podras tener es, Como funcionan?, bueno esta pregunta tiene muchas respuestas, ya
que obedece a como quieres que sea el juego, pero para la generalidad, existe una manera prctica de
saber como organizar los nodos, de forma que tenga un sentido en tu juego, y no tengas que hacerlo por
que en un tutorial dice que es as, sin que t entiendas porque.
Antes de empezar a crear juegos, se deben conocer algunos conceptos claves, que te ayudaran a
entender lo que hace cada nodo. Los principales son: Viewport, Camera, Sprite, Tiles.
Viewport: es el rea visible de tu juego, o ms bien, la pantalla, que puede mostrar cualquier cosa de
tu juego, si algo est fuera de los margenes de viewport no ser visible en tu juego, pero si existir,
como por ejemplo en un juego de Super Mario Bross, solo ves una pequea parte del nivel y a medida
que vas avanzando van apareciendo las dems cosas, esto es porque el viewport solo muestra una
porcin de todo el nivel. En Godot por defecto existe un viewport y as que no es necesario que lo
aadas tu, a este objeto puedes configurarle su tamao y en Godot est delimitado por un rectngulo
azul.
Camera: una camera, es exactamente lo que conocemos como cmara, pero para representarlo, es
como un camargrafo que sigue al actor o la escena, mientras va enfocando, como el la TV solo puedes
ver una cmara a la vez, en un juego es igual, solo se puede ver una cmara a la vez a travs de un
viewport, a esta cmara se le llama cmara activa.
Sprite: es una representacin grfica, puede ser una fotografa, un dibujo, una caricatura, un personaje,
el fondo, los objetos del fondo, etc..., cualquier cosa que tu quieras manipular mediante el teclado,
mouse, joypad, programacin, etc..., ser un Sprite, entonces lo usaremos para ir colocando nuestros
elementos en pantalla, como enemigos, personajes, obstculos, etc....
Tiles: este tipo de objeto es usado principalmente para crear los niveles de un juego, es un conjunto de
imgenes que al juntarlas componen una elemento reconocible, como por ejemplo el suelo, las
paredes, las plataformas. Principalmente, objetos inanimados, que estn all, como el escenario, o el
mundo del personaje.
Conociendo esos 4 elementos tienes una gran historia por detrs de como se han creado los vdeo
juegos.

En un principio trabajaremos con viewport, sprite y tiles. Es tpico de juegos con una sola pantalla
esttica, como la mayora de juegos conocidos: Candy Crash, Pacman, entre otros. Entonces vamos a
detallar los elementos de un juego archi-conocido Pacman, ya que justamente es un juego sencillo y
que rene estos conceptos bsicos.

Construccin de Pacman

Ac tenemos varios elementos sencillos:


1 pacman
4 fantasmas (de distintos colores)
frutas varias (naranja, pltano, frutilla, etc...)
los puntitos de comida
los puntos grandes de poder.
1 nivel
1 un rea de pantalla ms larga que ancha, as como una pantalla de celular en posicin viewport, para
ser claros, un rectngulo parado como un edificio, ms claro as?

Ahora necesitamos identificar que es cada cosa, ya est claro cual es el viewport. El pacman, las
frutas, los puntitos de comida, los puntos de poder y los 4 fantasmas sern los sprites, cada fantasma
ser una imagen nica para hacerlo ms simple, ya que con programacin podemos ocupar solo una
imagen, pero para efectos prcticos no nos sirve de esa forma. Y por ultimo el nivel ser el laberinto de
bordes azules.
Ocuparemos la imagen anterior para ir recortando cada sprite, lo puedes hacer con cualquier editor de
imgenes que te guste. Deberas lograr algo como esto:

Ahora, este juego tiene algunas particularidades, pacman abre y cierra la boca mientras avanza, los
fantasmas miran en direccin de donde avanzan y los puntos de poder brillan. Esto son animaciones
que por ahora las dejaremos fuera, lo importante es saber como organizar estos nodos en nuestra
escena.
En Godot, es muy necesario tener un nodo que se llama root (raz), puede ser de cualquier tipo, pero
siempre es recomendado que sea representativo de lo que estas haciendo, generalmente puedes ocupar
2 tipos de nodos como root en Godot:
Node CanvasItem Control: Sirve para crear todo lo que se relaciona como la informacin del
juego. En un juego normal tienes el puntaje, las vidas que te quedan, el nombre del nivel, las pantallas
de las opciones del juego, etc... todos estos elementos deberan pertenecer a un nodo raz de tipo
Control.
Node CanvasItem Node2D: Este sirve como nodo principal para todos los elementos de la
escena, es decir, nuestros enemigos, personajes, el nivel, obstculos, o cualquier elemento que
queramos manipular.
Empezando con lo prctico, crea un Node2D como root (para juegos 3D existen otros elementos que
no sern del alcance de esta gua), entonces all debes agregar cada sprite y posicionarlos en donde lo
desees, para los sprites selecciona Node CanvasItem Node2D Sprite, luego duplica los
sprites tantas veces como los que necesitemos, para eso se necesita 8 sprites
Debera verse como esto:

Ahora solo bastar ir asignando la imagen a cada sprite, en el parmetro Texture.


Es importante que las imgenes se encuentren en un subdirectorio del proyecto. Una recomendacin es
no ocupar maysculas, espacios y caracteres no ASCII en los nombres de carpetas o archivos,
preferentemente en ingles, para evitar errores de compatibilidad entre plataformas.
Una vez termines de asignarle las imgenes y colocarle sus respectivos nombres debera quedar como
esto:

Como ves, as se organizan los nodos en el juego, en este juego cada nodo es independiente, es decir,
ningn nodo tiene otros nodos dentro, esto es porque para este juego no es necesario, pero imagina por
un momento que los fantasmas tuviesen la posibilidad de tomar armas que encuentran en el camino,
cada fantasma tendra un sub-nodo que representara esa arma. Lo que trato de decir es que la
jerarqua es como en la realidad pasa. Haciendo un ejemplo, que estudiaremos ms adelante, nosotros
tenemos un cuerpo, pero este tiene ropa y accesorios, entonces esa ropa y accesorios son sub-nodos de
nuestro cuerpo.

Los Cuerpos
Haciendo referencia al ejemplo anterior, Godot contiene unos tipos de nodos que representan cuerpos,
como por ejemplo cuerpos Estticos, cuerpos kinematicos (con movimiento), cuerpos Rgidos
(afectados por la fsica Newtoniana)

Cada uno de estos tiene un rol en el juego


Estticos: son nodos que pueden ser obstculos o elementos coleccionables, en pacman, los obstculos
o elementos coleccionables son los puntitos, las bolas de poder, las paredes del nivel, las frutas. El nodo
asociado a el es:
Node CanvasItem Node2D CollisionObject2D PhysicsBody2D StaticBody2D
Kinematicos: son nodos que tienen la capacidad de ser animados y movidos en la pantalla, en pacman,
los kinematicos son pacman y los fantasmas, puesto que son estos los que se mueven por toda la
pantalla. El nodo asociado a el es:
Node CanvasItem Node2D CollisionObject2D PhysicsBody2D KinematicBody2D
Rgidos: son nodos que tienen la capacidad de verse afectados por la fsica Newtoniana (Godot trae
por defecto un motor de fsica que funciona sin que tu hagas nada). En pacman no existen cuerpos de
este tipo puesto que no existe fsica aqu. El nodo asociado a el es:
Node CanvasItem Node2D CollisionObject2D PhysicsBody2D RigidBody2D
Entonces ahora debemos crear cuerpos para todos los elementos que son parte del juego
en este caso para pacman y los fantasmas debes crear nodos kinematicos, y como el Sprite representa
una imagen de este cuerpo debes hacer que cada sprite sea hijo de cada nodo kinematico.
Haremos la prueba con pacman y debera quedar as:

Cuando lo agregues KinematicBody2D veras que se coloca en el centro de la escena, luego el sprite
pacman debes redefinir su parent al KinematicBody2D, vers que pacman sigue en su posicin
original y KinematicBody2D en el centro, pero cuando mueves KinematicBody2D tambin se mueve
pacman, pero al estar en posiciones distintas pasa que pacman no parece estar dentro de

KinematicBody2D lo que debemos hacer es configurar la posicin de pacman a x = 0, y = 0, ya que la


posicin de los nodos hijos es relativa a la del padre, es decir, al mover el padre todos los nodos hijos se
movern junto a l manteniendo sus posiciones visuales intactas. Esto es til cuando un personaje tiene
muchos accesorios y debes moverlos todo juntos, en ves de moverlos uno a uno, solo mueves el padre y
todos se movern con l, armnicamente.

Algunos Tips con Cuerpos


Si quieres que un personaje, enemigo o cualquier cosa sea afectado por las leyes fsicas, debes usar
RigidBody2D.
Si quieres controlar todas las caractersticas de movimiento con programacin en el espacio de tu
personaje, enemigo o cualquier cosa, debes usar KinematicBody2D.
Si deseas hacer cosas estticas como mesas, floreros, paredes, etc..., debes ocupar StaticBody2D.
En particular RigidBody2D es la mejor alternativa para los juegos de plataforma, ya que no tienes que
controlar la fsica de las cosas, pero este objeto carece de movimiento que si tiene el nodo
KinematicBody2D, pero a su vez, este ltimo, carece de ser afectado por las leyes fsicas, por lo tanto,
debes por medio de programacin agregarle a RigidBody2D la posibilidad que pueda moverse as
como lo hace KinematicBody2D (puesto que es ms fcil que programar la fsica para
KinematicBody2D). Para esto existe un cdigo que encontr en internet que le agrega la funcin move
a un RigidBody2D.
Debes agregar un script a RigidBody2D, copiar y pegar este cdigo en l:
func move(desired_velocity_x, accel, delta):
velocity_x = lerp(velocity_x, desired_velocity_x, accel*delta)
set_linear_velocity(Vector2(velocity_x, get_linear_velocity().y))
bsicamente esta funcin solo mueve el cuerpo atrs y adelante.

También podría gustarte