Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Creando la escena del jugador¶
Con la configuración del proyecto en su lugar, podemos comenzar a trabajar en el personaje controlado por el jugador.
La primer escena define el objeto Player
. Uno de los beneficios de crear una escena aparte para el jugador es que se puede probar de manera separada, aún antes de haber creado otras partes del juego.
Estructura de nodos¶
Para empezar, necesitamos elegir un nodo raíz para el objeto jugador. Como regla general, el nodo raíz de una escena debe reflejar la funcionalidad deseada del objeto - lo que el objeto es. Haz clic en el botón "Otro Nodo" y añade un nodo Area2D a la escena.
Godos mostrará un ícono de advertencia junto al nodo en el árbol de la escena. Puedes ignorarlo por ahora, lo resolveremos más adelante.
Con Area2D
podemos detectar objetos que se superponen o entran en contacto con el jugador. Cambia su nombre a Player
haciendo clic en el nombre del nodo. Este es el nodo raíz de la escena. Podemos añadir nodos adicionales al player para añadir funcionalidad.
Antes de añadir un hijo al nodo Player
, queremos asegurarnos de que no los movemos o redimensionamos accidentalmente haciendo clic sobre ellos. Selecciona el nodo y haz clic en el icono a la derecha del candado; su tooltip dice "Asegura que los hijos del objeto no son seleccionables."
Guarda la escena. Haz clic en Escenas -> Guardar escena, o presiona Ctrl+S
en Windows/Linux o Comando + S
en Mac.
Nota
Para este proyecto, seguiremos las convenciones de nomenclatura de Godot.
GDScript: Clases (nodos) usan PascalCase, variables y funciones utilizan snake_case, y las constantes TODO_MAYUSCULAS (Lee Guía de estilo de GDScript).
C#: Las clases, las variables de exportación y los métodos usan PascalCase, los campos privados usan _camelCase, las variables y los parámetros locales usan camelCase (Ver Guía de estilo de C#). Ten cuidado de escribir los nombres de los métodos de manera precisa al conectar señales.
Animación del sprite¶
Haz clic en el nodo Player
y añade (Ctrl + A en Windows/Linux o Cmd + A en macOS) un nodo AnimatedSprite2D como hijo. El AnimatedSprite2D
se encargará de la apariencia y las animaciones de nuestro jugador. Observa que hay un símbolo de advertencia junto al nodo. Un AnimatedSprite2D
requiere un recurso SpriteFrames, compuesto por una lista de las animaciones que puede mostrar. Para crear uno, busca la propiedad Sprite Frames
en la sección Animation del Inspector y haz clic en "[vacío]" -> "Nuevo SpriteFrames". Haz clic de nuevo para abrir el panel de "SpriteFrames":
A la izquierda hay una lista de animaciones. Haz clic en la opción "default" y renómbrala a "walk". Luego haz clic en el botón "Nueva Animación" para crear una segunda animación llamada "up". Busca las imágenes en el panel "Sistema de Archivos", están en la carpeta art
de la carpeta descomprimina anteriormente. Arrastra las dos imágenes, llamadas playerGrey_up[1/2]
y playerGrey_walk[1/2]
para cada animación a la sección "Cuadros de animación" que corresponde en el panel:
Las imágenes del player son un poco grandes para la ventana del juego, así que tenemos que reducirlas. Haz clic en el nodo AnimatedSprite2D
y establece la propiedad Scale
en (0.5, 0.5)
. Puedes encontrarla en el Inspector bajo la sección Node2D
.
Finalmente, añade un CollisionShape2D como hijo de Player
. Esto determinará el "hitbox" del jugador, o los límites de su área de colisión. Para este personaje, un nodo CapsuleShape2D
sería el más indicado ya que se ajusta mejor a la imagen, así que junto a "Shape" en el Inspector, haz clic en "<vacío>" -> "Nuevo CapsuleShape2D". Usando los dos manejadores de tamaño redimensiona la forma de colisión para cubrir el sprite:
Cuando hayas terminado, tu escena Player
debería verse así:
Estate seguro de salvar la escena de nuevo después de estos cambios.
En la siguiente parte, agregaremos un script al nodo de Player para moverlo y animarlo. Luego, configuraremos la detección de colisiones para saber cuándo el jugador fue golpeado por algo.