Escena del jugador y acciones de entrada

En las próximas dos lecciones, diseñaremos la escena del jugador, registraremos acciones de entrada personalizadas y codificaremos el movimiento del jugador. Al final, tendrás un personaje jugable que se mueve en ocho direcciones.

Cree una nueva escena yendo al menú Escena en la esquina superior izquierda y haciendo clic en Nueva escena. Cree un nodo KinematicBody como raíz y asígnele el nombre Player.

image0

Los cuerpos cinemáticos son complementarios al área y los cuerpos rígidos usados en el tutorial del juego 2D. Al igual que los cuerpos rígidos, pueden moverse y chocar con el entorno, pero en lugar de ser controlados por el motor de física, tú dictas su movimiento. Verá cómo usamos las características únicas del nodo cuando codificamos las mecánicas de salto y aplastamiento.

Ver también

To learn more about the different physics node types, see the Introducción a la física.

Por ahora, vamos a crear un equipo básico para el modelo 3D de nuestro personaje. Esto nos permitirá rotar el modelo más tarde mediante código mientras reproduce una animación.

Agregue un nodo Spatial como hijo de Player y asígnele el nombre Pivot. Luego, en el panel Sistema de Archivos, expanda la carpeta art/ haciendo doble clic en ella y arrastre y suelte player.glb en el nodo Pivot.

image1

Esto debería crear una instancia del modelo como hijo de Pivot. Puedes cambiarle el nombre a Character.

image2

Nota

Los archivos .glb contienen datos de escena 3D basados en la especificación GLTF 2.0 de código abierto. Son una alternativa moderna y poderosa a un formato propietario como FBX, que también es compatible con Godot. Para producir estos archivos, diseñamos el modelo en Blender 3D y lo exportamos a GLTF.

Al igual que con todo tipo de nodos de física, necesitamos una forma de colisión para que nuestro personaje choque con el entorno. Seleccione el nodo Player nuevamente y agregue una CollisionShape. En el Inspector, asigne una SphereShape a la propiedad Shape. La estructura alámbrica de la esfera aparece encima del personaje.

image3

Será la forma que use el motor de física para colisionar con el entorno, por lo que queremos que se ajuste mejor al modelo 3D. Redúzcalo un poco arrastrando el punto naranja en la ventana gráfica. Mi esfera tiene un radio de unos 0,8 metros.

Luego, mueva la forma hacia arriba para que su parte inferior se alinee aproximadamente con el plano de la cuadrícula.

image4

Puede alternar la visibilidad del modelo haciendo clic en el icono del ojo junto a los nodos Character o Pivote.

image5

Save the scene as Player.tscn.

Con los nodos listos, casi podemos comenzar a codificar. Pero primero, necesitamos definir algunas acciones de entrada.

Creating input actions

Para mover el personaje, escucharemos la entrada del jugador, como presionar las teclas de flecha. En Godot, aunque podríamos escribir todas las combinaciones de teclas en código, hay un poderoso sistema que te permite asignar una etiqueta a un conjunto de teclas y botones. Esto simplifica nuestros scripts y los hace más legibles.

Este sistema es el Mapa de Entrada. Para acceder a su editor, dirígete al menú Proyecto y selecciona Configuración del proyecto….

image6

En la parte superior, hay varias pestañas. Haga clic en Mapa de entrada. Esta ventana le permite agregar nuevas acciones en la parte superior; son tus etiquetas. En la parte inferior, puede vincular teclas a estas acciones.

image7

Los proyectos de Godot vienen con algunas acciones predefinidas diseñadas para el diseño de la interfaz de usuario, que podríamos usar aquí. Pero estamos definiendo el nuestro para admitir mandos.

Vamos a nombrar nuestras acciones move_left, move_right, move_forward, move_back y jump.

Para agregar una acción, escriba su nombre en la barra en la parte superior y presione Entrar.

image8

Para agregar una acción, escriba su nombre en la barra en la parte superior y presione Entrar.

image9

Para vincular una tecla o botón a una acción, haga clic en el botón "+" a su derecha. Haz esto para move_left y en el menú desplegable, haz clic en Tecla.

image10

Esta opción le permite agregar una entrada de teclado. Aparece una ventana emergente y espera a que presione una tecla. Presione la tecla de flecha izquierda y haga clic en Aceptar.

image11

Haz lo mismo para la tecla A.

image12

Ahora agreguemos soporte para el joystick izquierdo de un mando. Haga clic en el botón "+" nuevamente, pero esta vez, seleccione Eje del Mando.

image13

La ventana emergente le ofrece dos menús desplegables. A la izquierda, puede seleccionar un mando por índice. Dispositivo 0 corresponde al primer mando conectado, Dispositivo 1 corresponde al segundo y así sucesivamente. Puede seleccionar la palanca de mando y la dirección que desea vincular a la acción de entrada a la derecha. Deje los valores predeterminados y presione el botón Agregar.

image14

Haga lo mismo para otras acciones de entrada. Por ejemplo, vincule la flecha derecha, D y el eje derecho del joystick izquierdo a move_right. Después de vincular todas las teclas, su interfaz debería verse así.

image15

Sólo nos queda establecer la acción jump. Vincula la barra espaciadora y el botón A del mando. Para vincular un botón de un mando, selecciona la opción Botón del mando en el menú desplegable.

image16

Deje los valores predeterminados y haga clic en el botón Add o añadir.

image17

Tu acción de entrada jump debería verse así.

image18

Esas son todas las acciones necesarios por el juego. Puede usar este menú para designar cualquier grupo de tecla o botón en sus proyectos.

En el siguiente parte, vamos a programar y verificar el movimiento de jugador.