Intermedio

Godot. Crear un ítem recolectable

Enviado por tech4life el

Para dar mayor jugabilidad a nuestros juegos, a veces es interesante añadir items u objetos que el jugador pueda recoger para incrementar sus habilidades en el juego. 

En este mini tutorial vamos a dar las claves para crear un ítem para que nuestro jugador, en nuestro caso una nave, pueda recogerlo y le incremente alguna de sus habilidades. En este caso será un escudo y enseñaremos como recoger el ítem y activar el escudo.

El primer paso es crear la escena que corresponda a nuestro ítem.

Godot. Abrir un fichero

Enviado por tech4life el

En nuestros juegos, a veces es imprescindible tener ficheros de recursos con datos.

En esta píldora vamos a ver como abrir un fichero y leer los datos que hay dentro. 

En nuestro caso el fichero all_words.txt esta en la carpeta assets y es una lista de palabras separadas por coma.

Para leerlo primero tenemos que abrir el fichero indicando que solo queremos leer los datos.

file = FileAccess.open("res://assets/all_words.txt", FileAccess.READ)

El siguiente paso es convertir el fichero en texto con la función get_as_text

Godot. Función call_group

Enviado por tech4life el

Cuando estamos desarrollando nuestro juego, a veces podemos querer ejecutar una misma acción para una serie de elementos u objetos. 

Por ejemplo, se ha acabado un nível y queremos eliminar todos los objetos enemigos, o bien hemos acabado un puzzle y queremos ocultar todos los botones, etc.

Para hacer esto podemos utilizar el sistema de grupos de Godot. 

Para ello primero tenemos que ir a cada objeto y añadirle el grupo, para ello iremos al dock donde esta el inspector y nos moveremos a la pestaña de Node, donde encontraremos la subpestaña de Groups

Godot. Funciones Lambda

Enviado por tech4life el

Una función Lambda o expresión Lamba, son pequeñas funciones sin nombre que se definen en línea. Se utilizan, no solo en Godot, si no en muchos lenguajes, para realizar tareas sencillas y se pueden pasar como argumento a otras funciones o almacenarse en una variable.

En GDScript las lambdas son Callables personalizados que no estan asociados a ningún Objeto. 

Vamos a ver un ejemplo donde quedará más claro

La función dot

Enviado por tech4life el

La funcion dot es una función de los Vectores, en este caso vamos a ver en el caso de un vector de 2 dimensiones (Vector2).

Esta función sirve para calcular el producto escalar de dos vectores. Esta es una operación matemática que combina dos vectores en un solo valor.

El producto escalar se define como : 

Diferencias objetos por metodos

Enviado por tech4life el

A veces en nuestro código tenemos funciones a las que le pueden llegar diferentes objetos/ nodos, por ejemplo un signal que nos indique que un objeto ha entrado en nuestra zona.

En el ejemplo que comentamos, podriamos tener una función asociada al "body_entered" y queremos saber que tipo de Node2D ha entrado en nuestra zona.

Para ello podemos utilizar diferentes formas pero una de ella, es mirar si el objeto que nos llega (body) tiene una función en concreto, y luego podemos mirar lo que nos devuelve esa función.

Añadir un get o un set

Enviado por tech4life el

Cuando creamos una variable en alguna de nuestras escenas quizas queremos definir unas funciones get y set.

Con los get y los set podemos acceder al valor de la variable (get) o escribir un nuevo valor en la variable (set) mediante funciones, y no accediendo a la variable. Esta manera de trabajar es muy comun en programación y nos permite poder tratar los datos de nuestra variable tanto a la entrada como a la salida. 

Cambiar la animación de un sprite

Enviado por tech4life el

Si estamos desarrollando un juego en 2D y tenemos una escena con un sprite de tipo AnimatedSprite2D y tenemos diferentes animaciones, por ejemplo una para que nuestro sprite corra, otra para la posición de reposo, otra para disparar u otra para morirse, y queremos que se active por código alguna de estas animaciones en concreto lo que tenemos que hacer es lo siguiente.

Primero de todo, en nuestro script, vinculado a la escena en la que tenemos nuestro sprite, vamos a declarar una variable  para recuperar nuestro sprite node