En esta parte del tutorial, modificarás el blueprint del jugador para añadir la capacidad de esprintar en movimiento manteniendo pulsada una tecla específica. Aprenderás sobre el sistema Enhanced Input de Unreal Engine, el sistema recomendado para recibir entradas del jugador. Usarás este sistema para:
Crear una acción de entrada que defina qué entrada activa el movimiento de esprintar.
Conectar la acción de entrada al blueprint del jugador convirtiéndola en un evento.
Aumentar la velocidad de movimiento del jugador mientras esprintas.
En la sección anterior, creaste la lógica del personaje enemigo, de modo que los enemigos persigan al jugador cuando estén a la vista del enemigo. Con una mecánica de esprint, estás proporcionando una mecánica de juego que el jugador puede usar para evadir a estos personajes enemigos.
Al diseñar juegos, es importante compilar desafíos para el jugador, como enemigos, al tiempo que se proporciona una herramienta o estrategia que el jugador pueda usar para superar dichos desafíos.
Esprintar es una función popular disponible en la mayoría de los juegos de muchos géneros y que permite al jugador moverse más rápido. Esta mecánica cambia la forma en que los jugadores se desplazan por los espacios que has diseñado en tu nivel.
Antes de empezar
Asegúrate de que entiendes los temas tratados en la sección anterior El diseño de una aventura de puzles:
Aspectos básicos de los blueprints, como añadir nodos, funciones y eventos.
Necesitarás los siguientes recursos de los documentos anteriores de esta serie de tutoriales:
BP_AdventureCharacter
Crea un recurso de acción de entrada
Primero, crearás un recurso de acción de entrada que defina:
El nombre de la acción.
El tipo de valor de la acción.
El tipo de activador (pulsar una tecla, mantenerla pulsada o soltarla).
La acción de entrada es lo que el blueprint del personaje jugable escucha antes de ejecutar un nuevo comportamiento.
Posteriormente, vincularás la acción de entrada a una tecla específica, lo que también se conoce como asignación o mapeo, usando un recurso Contexto de asignación de entradas que ya existe en el proyecto.
Este es un diagrama que muestra la relación entre los distintos recursos usados en el sistema Enhanced Input. Para obtener más información, consulta la documentación de Enhanced Input.
| Acción de entrada | Contexto de asignaciones de entrada | Blueprint |
|---|---|---|
Define la intención y las reglas de detección. | Asigna teclas y botones a acciones de entrada. | Usa acciones de entrada para implementar comportamientos. |
Para crear un recurso Acción de entrada para un nuevo movimiento de esprint, sigue estos pasos:
Ve al explorador de contenido y a la carpeta Entrada > Acciones. En esta carpeta verás los recursos de acciones de entrada relacionados con Jump, Look, MouseLook y Move.
Haz clic derecho en el explorador de contenido, ve a Entrada y crea un recurso Acción de entrada.
Dale a este recurso el nombre
IA_Sprint.La convención de nomenclatura es nuestra forma de definir que se trata de un archivo de acción de entrada, pero no es obligatorio que se llame así.
Haz doble clic en
IA_Sprintpara abrirlo. Una acción de entrada es un recurso de datos y se abre en una nueva ventana con un panel Detalles.
Tipos de acción de entrada
Echemos un vistazo al panel Detalles de la ventana de datos de IA_Sprint. Usa el panel Detalles para modificar las propiedades de este recurso, como definir la acción que te gustaría escuchar del personaje jugable.
Primero, ve a la propiedad Tipo de valor. Determina qué tipo de datos hay en la acción de entrada. Al crear acciones de entrada, elegirás un tipo de valor en función del tipo de movimiento que quieras capturar con la acción.
De forma predeterminada, el tipo de acción de entrada es Digital (bool), lo que significa que tiene un estado de activación y desactivación (esprintar o no esprintar). Mantendrás el valor por defecto para IA_Sprint.
El tipo de valor también puede ser:
Axis1D: la acción tiene un valor para el movimiento unidimensional (desplazamiento hacia dentro y hacia fuera) o un ajuste escalar (cambiar la velocidad de movimiento).
Axis2D: la acción tiene valores X e Y para el movimiento en dos dimensiones, como los controles WSAD.
Axis3D: la acción tiene valores X, Y y Z para el movimiento tridimensional, como los controles de volar o nadar.
Cómo configurar la acción de entrada con un activador
Para definir qué tipo de pulsación de tecla activa la acción de esprint, sigue estos pasos:
En la sección Acción, junto a Activadores, haz clic en el botón más (+) para añadir un nuevo elemento a la matriz Triggers.
Haz clic en el campo desplegable donde dice Ninguno en el nuevo elemento que has añadido. Verás una lista de opciones como Combinación, Mantener, Abajo e incluso entrada táctil como Tocar. Por lo general, se esprinta manteniendo pulsada una tecla, así que selecciona Abajo en la lista.
Haz clic en el botón Guardar arriba a la izquierda en la ventana para guardar tus cambios. Cierra
IA_Sprint.
La acción usa Down en lugar de Hold porque Down se activa inmediatamente al pulsar una tecla, mientras que Hold se activa después de que haya transcurrido un tiempo determinado con la tecla pulsada.
Hold puede ser útil para acciones como habilidades de ataque pesado, donde tienes que cargar tu ataque antes de soltar la tecla. Para obtener más información sobre cada selección, pasa el cursor sobre ella para leer la burbuja informativa.
Amplía un activador para ver su umbral de actuación o hasta dónde hay que pulsar o mover una entrada para que active la acción. Una tecla tiene una actuación de 0 cuando no se pulsa y 1 cuando se pulsa. Los controles de los mandos también pueden tener valores fraccionarios entre 0 y 1 si sus entradas se pulsan parcialmente.
Ahora, tu recurso Acción de entrada está configurado. Has dado un nombre a la acción, IA_Sprint, y has definido qué la activa (pulsar una tecla o un botón). A continuación, usarás un contexto de asignación de entradas para definir qué tecla activa la acción.
Elige una asignación de teclas
Un recurso Contexto de asignaciones de entrada recopila los recursos Acción de entrada que se le han asignado, como el IA_Sprint que acabas de crear, para establecer teclas de entrada y pasar valores a un blueprint de personaje como nuestro personaje jugable BP_AdventureCharacter.
Para asignar una tecla a la acción IA_Sprint, sigue estos pasos:
Vuelve al explorador de contenido. Desde la carpeta Entrada > Acciones, sube un nivel hasta la carpeta Entrada. Aquí, verás dos recursos Contexto de asignación de entradas,
IMC_DefaulteIMC_MouseLook.IMC son las siglas de Input Mapping Context (contexto de asignaciones de entrada).
Haz doble clic en
IMC_Defaultpara abrirlo en una nueva ventana del editor con un panel Detalles.IMC_Defaultes el recurso de contexto de asignación de entradas que usamos en este proyecto para las habilidades predeterminadas del jugador, como moverse y saltar.En la sección Asignaciones, amplía la lista Asignaciones, que revela tres entradas: IA_Jump, IA_Move e IA_Look. Estas son los acciones de entrada que viste antes en la carpeta Entrada > Acciones.
Junto a Asignaciones, haz clic en Añadir (+) para añadir una entrada adicional a la lista.
Para la nueva entrada, usa el desplegable para seleccionar el recurso IA_Sprint que creaste antes.
Amplía la entrada IA_Sprint para revelar la selección de teclas para esta acción. Haz clic en el botón Teclado y pulsa la tecla Bloq Mayús del teclado. También puedes usar el desplegable para asignar una tecla a esta acción.
Guarda y cierra el contexto de asignación de entradas.
Después de definir la tecla de la acción de entrada IA_Sprint, ahora tienes una acción de entrada que se activa cuando el jugador mantiene una tecla pulsada, y esa acción está asignada a la tecla Bloq Mayús.
Unreal Editor usa algunas asignaciones de teclas (Mayús, Ctrl, Alt, etc.), por lo que es posible que no funcionen al probar tu juego en modo PIE. Si usas una de estas asignaciones, tendrás que probar en modo independiente o usar una tecla diferente durante el desarrollo y luego cambiar a la tecla que quieras antes del empaquetado de tu juego. Entre las asignaciones de teclas que suelen ser seguras en el modo PIE se encuentran las teclas alfabéticas y numéricas, las teclas de flechas, el bloqueo de mayúsculas, Intro, Retroceso, RePág/AvPág e Inicio/Fin.
Modifica el blueprint del jugador para esprintar
Con tu acción de entrada configurada, ahora modifica el blueprint del jugador para esprintar usando la tecla que hayas asignado.
La función de esprintar se creará aumentando la velocidad de movimiento del jugador cuando pulses el activador de IA_Sprint. Cuando el jugador suelta la tecla de esprintar, el personaje vuelve a su velocidad de movimiento predeterminada.
Así que, para empezar, primero dale al personaje una velocidad de movimiento predeterminada y luego crea la mecánica del esprint.
Cómo crear variables de velocidad de movimiento
Primero, crearás variables para almacenar la velocidad de movimiento predeterminada del jugador y la velocidad de movimiento al esprintar. El componente Movement del jugador establece su velocidad de movimiento predeterminada, pero si se guarda en una variable, se conservará esa velocidad y se asegurará de que el jugador pueda volver a esa velocidad después de la acción de esprintar.
Para configurar variables que guarden las distintas velocidades de movimiento del jugador, sigue estos pasos:
Ve al explorador de contenido y luego a la carpeta Contenido > AdventureGame > Diseñador > Blueprints > Personajes y abre tu blueprint
BP_AdventureCharacter.Desde el panel My Blueprint, añade una nueva variable llamada DefaultMovementSpeed de tipo float.
Añade una variable más llamada SprintMovementSpeed, también de tipo float.
Haz clic en el botón Compilar en la esquina superior izquierda del editor de blueprints.
Después, haz clic en la variable SprintMovementSpeed. En el panel Detalles, cambia Valor predeterminado > Velocidad de movimiento al esprintar a 1000.
Cómo establecer el movimiento predeterminado del jugador
Cuando arranque la partida, captura la velocidad de movimiento predeterminada del jugador.
Para guardar la velocidad de movimiento predeterminada cuando comience la partida, sigue estos pasos:
En el grafo de eventos, haz clic con el botón derecho en un espacio vacío y crea un nodo Event BeginPlay. Este nodo se ejecuta una vez al iniciar la partida.
Usarás Event BeginPlay para obtener la velocidad de movimiento predeterminada del jugador cuando se inicie la partida. Arrastra el pin de ejecución de este nodo y crea un nodo Set Default Movement Speed.
Como has visto al crear
BP_Enemy, el componente de movimiento del personaje contiene las propiedades que controlan su velocidad. En el panel Componentes, arrastra el componente Character Movement (CharMoveComp) al grafo de eventos.Arrastra el pin del nodo Character Movement y crea un nodo Get Max Walk Speed.
Conecta el pin Max Walk Speed al nodo Set Default Movement Speed.
Esta función establece el valor de la variable DefaultMovementSpeed que creaste en la velocidad a la que camina el jugador de forma predeterminada, usando el nodo Max Walk Speed del componente Character Movement del jugador.
Si seleccionas el componente Character Movement y observas el panel Detalles en la sección Movimiento del personaje: Andando, verás que la velocidad máxima de paso predeterminada es de 600 cm/s.
El componente Character Movement contiene muchas propiedades que controlan cómo se mueve el personaje. Puedes usar y cambiar cualquiera de ellas en tiempo de ejecución con lógica de blueprint.
Cómo definir el comportamiento de la acción de esprint
Ahora que el jugador tiene una velocidad de movimiento inicial, puedes aumentarla cuando el jugador pulse la tecla de esprint.
Cuando añades una acción de entrada a un grafo de eventos, Unreal Engine crea un nodo de evento que se ejecuta cuando el jugador pulsa la tecla asignada a esa acción, tal y como se define en el contexto de asignación de entradas. En este caso, el evento IA_Sprint se ejecuta cuando pulsas Bloq Mayús.
Si quieres usar tu acción de entrada IA_Sprint para crear la mecánica de sprint, sigue estos pasos:
Haz clic derecho en cualquier parte vacía del grafo de eventos, busca IA_Sprint y selecciona el nodo IA_Sprint en la categoría Entrada > Eventos de acción mejorada.
Haz clic en la flecha de la parte inferior del nodo para ver más pines. Usarás los pines Activado y Completado:
Activado significa que el jugador está pulsando la tecla de acción, por lo que debería hacer que el personaje se mueva a su SprintMovementSpeed.
Completado significa que el jugador ha soltado la tecla, por lo que debería devolver al jugador a su DefaultMovementSpeed.
En el panel Componentes, arrastra el componente Movimiento del personaje (CharMoveComp) al grafo de eventos de nuevo.
Arrastra el pin Movimiento del personaje y crea un nodo Set Max Walk Speed.
Desde el nodo Set Max Walk Speed, arrastra el pin Velocidad de paso máxima y crea un nodo Get Sprint Movement Speed.
Conecta el pin Triggered del nodo IA_Sprint al nodo Set Max Walk Speed.
Esto establece la velocidad de movimiento del personaje jugable en el valor de velocidad de movimiento al esprintar, que estableciste en 1000 previamente.
Por último, tendrás que restablecer la velocidad de movimiento al valor predeterminado cada vez que el jugador suelte la tecla. Esta acción se marcará como completada.
Para devolver al personaje a su movimiento predeterminado al terminar de esprintar, sigue estos pasos:
En el nodo IA_Sprint, arrastra desde el pin Completado y crea otro nodo Set Max Walk Speed.
Configura el nodo Set Max Walk Speed:
En Velocidad de paso máxima, vincula una referencia a DefaultMovementSpeed.
En Objetivo, conecta el nodo de referencia del componente Character Movement.
Compila y guarda tu blueprint.
Pon a prueba tu personaje
En Unreal Editor, haz clic en el botón Reproducir para probar el juego. Ahora podrás esprintar cuando te muevas y mantengas pulsada la tecla asignada a esprintar (Bloq Mayús).
Experimenta con distintos valores de velocidad de paso máxima y velocidad de movimiento al esprintar en tu personaje jugable para decidir cuál funciona mejor para tu juego. Ahora que el jugador puede esprintar, vuelve a tus personajes BP_Enemy y aumenta su valor de Velocidad máxima para ajustar el nivel de dificultad de los encuentros en el pasillo 3 y la sala 3.
También puedes seguir añadiendo nuevas entradas y comportamientos si quieres ampliar lo que has implementado en este tutorial y añadir otras características a tu juego.
Siguiente
Ahora que has añadido todas las mecánicas y funciones de tu personaje jugable, ya puedes terminar el nivel. En el último módulo de esta serie, añadirás los toques finales a tu nivel usando todos los elementos que has creado hasta ahora.