Tengo tiempo sin hacer esto de los tutoriales, es hora de retomarlo. Explicaré un tema que me habían pedido hace un tiempo, en los siguientes días es probable que pueda hablar sobre los dos que me faltan hasta ahora (según la lista de tutoriales).
(Escribí esto hace como un mes, pero no tenía internet para publicarlo. Hoy en día me faltan más tutoriales por cumplir)
Hacer un selector de personajes en Godot es muy sencillo, tenemos muchos métodos diferentes. Lo que aplicaremos ahora será la creación de una nueva escena de Interfaz 2D. Para los personajes que serán “seleccionables” podemos usar el nodo de tipo TextureButton, y si hace falta redimensionar la imagen, activamos su propiedad “expand”.
Cuando tengamos las imágenes/botón preparadas (que en mi caso son naves, pero puede ser cualquier cosa) añadamos un script para el nodo raíz y empecemos a conectar la señal de “pressed()” de los botones con él.
Después necesitaremos un Singlenton o script en el AutoLoad que pueda guardar al jugador que queremos añadir a nuestro nivel. Hagan clic en “Nuevo Script” y lo guardan con el nombre de “global_var”. Pueden hacer de ese script un Singlenton si entran en los aquíAjustes de Proyecto y en la pestaña de AutoLoad lo añaden. El nombre que elijan para ese script será el que deben usar cuando quieran trabajar con sus variables y/o funciones. Si no sabes como funciona el AutoLoad, pasa por aquí.
Antes de cerrar el nuevo script, creen la variable de “player_dir” e indiquen que será de tipo String. Ella guardará la ruta que tiene el personaje que instanciaremos, en el Sistema de Archivos de nuestro proyecto.
Ya con esto podemos volver a nuestro Selector de Personajes. En el script con todas las señales de presionado conectadas, vamos a crear las variables de “nave_azul”, “nave_roja” y “nave_verde”, que son mis personajes. Esas tres variables son una cadena de texto (String) y para tener la dirección de cada una sólo tenemos que arrastrar la escena correspondiente al personaje hasta el espacio después del igual, en la variable.
Dentro de todas las funciones que quedaron abiertas, hagan que la variable “player_dir” del script global, pase a tener la dirección del personaje que represente ese botón. Por ejemplo: la primera señal que emití corresponde a la nave verde, por lo que la dirección correcta para el script global será la variable con la nave verde.
También debemos añadir una línea que nos haga cambiar de escena, yo lo resolví con una función que llama a “get_tree().change_scene()”, sólo tienen que poner dentro “change_scene()” la ruta de la escena nivel, y después de hacer clic en alguna nave, cambiaremos de escena.
Ya en nuestro nivel sólo tendremos que instanciar la nave que indiquemos en el Selector. Añadan un Script donde quieran: puede ser en el nodo raíz o por algún contenedor de los personajes, como es mi caso. Básicamente tienen que cargar la escena con la dirección que guardamos hace un rato, y usar la función “instance()” para crear una nueva instancia que podamos tener en la escena. La añadimos como hija y cambiamos su propiedad de posición si no tenemos una cámara.
Como algo opcional pueden crear un nodo Position2D para guardar la posición del nuevo personaje.
Espero que este artículo con su vídeo les sea de utilidad. Pueden dejar dudas o recomendaciones en los comentarios de este blog o YouTube.
Hola, soy nuevo en Godot y este tutorial me costó entenderlo mucho para implementarlo en mi proyecto…
Me sale un error, como si no estuviera reconociendo el autoload global_var , (en mi caso global_var2)..Parser Error: The identifier “global_var2” isn’t declared in the current scope.Este error sale en el scrip de la escena del selector de personajes. En algunos foros de Godot vi que muchos tienen problemas similares pero no encontre una solucion a mi problema, tienes alguna pista por donde revisar para corregir este error?. desde ya, muchas gracias..