Tema 2. Godot Engine. Las escenas.
Las escenas son los escenarios donde se va a desenvolver nuestra historia. Pero en Godot las escenas también podrán ser objetos definidos por nosotros. Es decir, en Godot, todo se trata con escenas. Lo veremos más adelante. Para crear una escena (una escena es un nodo) podemos hacerlo de varias formas. Hacemos Click en el círculo azul Escena 2D o bien desde el + que hay debajo de Escenas en el menú. Siempre partiremos de un Nodo raíz.
Si seleccionamos Escena 2D automáticamente se crea la escena de tipo Node2D.
Si hacemos Click en + escogemos Node2D
Una vez creada una escena, le pondremos un nombre que defina bien dicha escena.
En este tema, crearemos una escena para definir un personaje: por lo tanto pondremos de nombre a la escena: Personaje
Nodo Sprite
Ahora crearemos un Nodo hijo a la escena principal Personaje de tipo Sprite para definir la textura (la imagen) del mismo. Antes de eso, vamos a crear en la carpeta Recursos una carpeta llamada Player y dentro guardaremos las diferentes texturas.
Las texturas pueden ser imágenes sueltas (un png) por frame o bien una spridesheet (textureatlas) donde se encuentran todas las imágenes de animación de nuestro personaje.
En este ejemplo, añadiremos las dos opciones.
Ejemplo de Atlas compuesto de todos los posibles estados de un tipo de objeto:
Creamos el Nodo Sprite que será hijo del Nodo Personaje:
En la parte derecha veremos las propiedades del nodo Sprite.
Existen dos opciones:
- Crear una imagen con una imagen png: arrastramos el png de la carpeta recursos dentro de la propiedad Texture del Sprite. Si hacemos esto, veremos que la imagen se muestra en la pantalla principal de la escena Personaje.
- También podemos arrastrar todo el atlas de un personaje (llamado spritesheet) con todas sus animaciones incluidas dentro de Texture.
Nota: Otra forma de hacerlo sería desde la misma propiedad Texture Click en la flecha Vacío y opción Cargar. Ahora podemos seleccionar la imagen que queramos.
Arrastraremos el spritesheet:
En la propiedad Animation tenemos la opción HFrames y VFrames. Esto representa una matriz que deberemos ajustar al tamaño de la matriz de nuestro spritesheet.
Intentaremos siempre trabajar con spritesheets sencillos (matriz exacta).
En nuestro ejemplo definiremos
HFrames: 6
VFrames: 6
La propiedad Frame nos indica el índice de cada frame (imagen) de nuestra matriz.
Podemos ir haciendo click en Frame en la flechita arriba y abajo para situarnos en la imagen que queremos. Observaremos que la imagen en la escena va cambiando en función del índice.
Una vez hecho esto, guardaremos la escena que hemos creado.
Si intentamos ejecutar nuestro proyecto nos aparecerá una ventana que nos indica que no hemos seleccionado una escena principal por defecto que será la que se verá cuando se inicie el proyecto. En este caso, como solo tenemos una, seleccionamos la escena Personaje.
La utilidad de usar un SpriteSheet en un Nodo Sprite es que el diseñador del juego, puede componer su propio SpriteSheet de un tipo de terminado de objetos, como en este ejemplo, formado por pociones mágicas. Usando un único SpriteSheet podemos acceder mediante el índice a cualquier tipo poción que deseemos durante el transcurso del juego. Y es más, esto lo podremos hacer usando código GDScript.
Sprite.frame = 4
Por lo tanto, el uso de un SpriteSheet en un Nodo Sprite sería el de “añadir una imagen” concreta que haya dentro del SpriteSheet en dicho Nodo Sprite, de tal forma que con una única imagen SpriteSheet formada por diversos objetos podemos usarla en todo el juego.