Antes de empezar
Asegúrate de haber completado los objetivos de la sección anterior, Configuración y compilación de tu proyecto:
Has creado un proyecto basado en la plantilla Primera persona con clases C++ personalizadas para el modo de juego.
Has verificado que el proyecto usa el sistema de entradas mejorado.
Configuración de un nuevo personaje
Has configurado un nuevo proyecto de C++ con un modo de juego personalizado. Ahora añadirás una nueva clase de personaje, la extenderás a los blueprints y la establecerás como el peón jugador por defecto de tu modo de juego.
Creación de una clase de personaje C++
Los recursos de actor son cualquier objeto que pueda colocarse en un nivel. Los peones son actores que pueden ser controlados por jugadores o por IA. Los personajes son un tipo especial de peón que se utilizan como personajes jugables. Si quieres saber más sobre estas clases de actor, consulta la información sobre actores, peones y clases de personajes en la documentación del marco de jugabilidad de UE.
Para crear una nueva clase de personaje y añadir C++ a tu proyecto, sigue estos pasos:
En el menú principal del editor, ve a Herramientas > Nueva clase de C++.
En la ventana Elegir clase padre, busca y selecciona Character, luego haz clic en Siguiente.
Introduce un nombre para la nueva clase (en este tutorial se utiliza
AdventureCharacter) y haz clic en Crear clase.Unreal Engine abrirá automáticamente los nuevos archivos de clase en Visual Studio (VS). Vuelve a VS para buscar tus nuevos archivos.
Si VS no te pide automáticamente que actualices el proyecto, en Unreal Editor, dirígete a Herramientas > Actualizar proyecto Visual Studio.
Extender tu personaje de C++ a los blueprints
Al igual que hiciste con el modo de juego, en el explorador de contenido, haz clic derecho en tu clase de personaje y selecciona Crear clase de Blueprint basada en <CharacterName> para crear un blueprint para ese personaje en la carpeta Blueprints.
Cambiar el personaje jugable por defecto
Para usar tu nuevo personaje en el juego, establécelo como la clase de peón por defecto que se utiliza en el modo de juego de tu proyecto.
Para establecer tu personaje como el personaje jugable por defecto, sigue estos pasos:
Si tu blueprint de modo de juego aún no está abierto, en el explorador de contenido, haz doble clic en tu nuevo blueprint para abrirlo en el editor de blueprints.
En el panel de detalles del blueprint, expande Clases. Aquí puedes establecer distintas clases predeterminadas para este modo de juego.
Cambia Default Pawn Class a tu blueprint de personaje (
BP_AdventureCharacter).Haz clic en Guardar este recurso en la esquina superior izquierda de la ventana para guardar el blueprint de modo de juego. A continuación, haz clic en Compilar.
Explorar las acciones de entrada
El personaje por defecto de la plantilla First Person utiliza un conjunto de acciones de entrada preexistentes que se combinan con blueprints para hacer que el personaje se mueva, salte y mire a su alrededor.
Abre y explora estas acciones de entrada si quieres más información sobre cómo guían los movimientos de este personaje.
En el árbol de recursos del explorador de contenido, ve a la carpeta Contenido > Entrada> Acciones. Verás tres acciones de entrada llamadas IA_Jump, IA_Look y IA_Move que corresponden a saltar, mirar y moverse respectivamente.
Haz doble clic en IA_Jump para abrirlo y ver su panel de detalles.
Las acciones de entrada del personaje usan las siguientes propiedades para definir qué tipo de acción es y qué hace:
Propiedad | Descripción |
Value Type | Determina qué tipo de valor contiene esta acción de entrada. Elige un tipo de valor en función del tipo de movimiento que quieras capturar con esta acción de entrada. Por ejemplo, Axis1D es un valor float que captura el movimiento unidimensional (desplazamiento hacia dentro y hacia fuera) o un ajuste escalar (cambiar la velocidad de movimiento). Axis2D es un vector de dos floats que captura el movimiento en dos dimensiones, como los controles WSAD. Axis3D es un vector de tres floats que captura el movimiento tridimensional, como los controles de volar o nadar. |
Triggers | Crear activadores que representan los posibles estados de la acción para poder construir lógica con estos activadores en blueprints o código. Cuando el botón asignado a |
Modifiers | Modifica el valor de entrada bruto que recibe UE antes de enviarlo a cualquier activador de entrada. |
Exploración de los contextos de asignación de entradas
Las acciones de entrada no funcionan solas; necesitan un contexto de asignación de entrada para saber qué botón debería activarlas y en qué contexto. Este es un conjunto de asignaciones que describen las reglas para activar una acción de entrada. Puedes crear y personalizar múltiples contextos de asignación de entradas y activarlos o desactivarlos dinámicamente para adaptarlos a las necesidades de tu juego.
El personaje predeterminado ya cuenta con un contexto de asignación de entradas que puedes encontrar en el explorador de contenido en Contenido > Entrada. Haz doble clic en IMC_Default para abrirlo y ver su panel de detalles.
IMC_Default contiene tres asignaciones que asignan cada una de las tres acciones de entrada a las acciones de los usuarios. Cada asignación extrae los activadores y modificadores de la acción de entrada.
Asignación de una acción de salto
Expande la asignación IA_Jump. Verás que tiene dos vinculaciones de control: Bara espaciadora y Botón frontal inferior del mando. Si pulsas cualquiera de estos botones en el juego, se actviará IA_Jump.
Asignación de movimientos en 2D con las teclas del teclado
A continuación, expande IA_Move para ver sus nueve vinculaciones correspondientes a las teclas WASD, las teclas de flecha y el joystick izquierdo del mando.
Crear movimiento bidimensional a partir de varias teclas individuales requiere algo más de preparación que el simple salto booleano.
La pulsación de una tecla es unidimensional y devuelve el valor 0 si no se pulsa y 1 si se pulsa. Esto funciona perfectamente para la tecla D o la tecla de dirección derecha, ya que deberían mover al personaje en una dirección positiva a lo largo del eje X (es decir, hacia la derecha). Sin embargo, necesitamos que el personaje se mueva hacia delante, hacia la izquierda y hacia atrás también. En otras palabras, queremos valores del 0 al 1 y del 0 al -1 tanto en el eje X como en el eje Y.
Por lo tanto, para obtener valores que generen movimiento en todas las direcciones, las acciones de entrada usan modificadores para transformar el valor de entrada en un eje diferente o en un valor negativo.
Por ejemplo, amplía la vinculación del control A y sus modificadores para ver cómo se configura. Verás que tiene el modificador Negate. Esto significa que cuando se pulsa la tecla, el valor 1.0 se negativiza a -1.0, lo que mueve al personaje hacia abajo en el eje X o hacia la izquierda.
Expandir el modificador Negate te permite especificar si quieres negativizar los valores de los ejes X, Y o Z. Todos ellos están activados por defecto, pero puedes restringir la negativización a ejes específicos en función de tus necesidades.
Ahora, expande la vinculación de control S. Para crear un movimiento hacia atrás en el eje Y, esta vinculación tiene dos modificadores: Swizzle Input Axis Values, que cambia la entrada del eje X al eje Y, y Negate.
Expande el modificador Swizzle Input Axis Values. La opción Order especifica cómo deben reordenarse los valores de los ejes. En este caso, la acción de entrada está utilizando YXZ, por lo que la ordenación XYZ por defecto de los ejes X e Y se ha cambiado.
Asignación de movimientos en 2D en un mando
La palanca del mando utiliza un eje en 2D para las entradas en lugar de pulsar un botón en una dimensión, por lo que esta asignación solo necesita una vinculación de control para controlar el movimiento de la palanca.
Si expandes Modifiers para Eje en 2D del joystick izquierdo del mando, verás los modificadores Dead Zone y Scalar.
Dead Zone especifica los umbrales por encima y por debajo de los cuales se ignorará la entrada. Se usa para filtrar pequeños valores de entrada cerca del centro del joystick que a menudo no son intencionados y que se deben a que la palanca no está centrada perfectamente o a una presión ligera con el dedo.
Scalar especifica por cuánto multiplicar cada uno de los valores de los ejes X, Y y Z para poder controlar la velocidad a la que se mueve el personaje en cada dirección.
Asignación de controles de vista en mandos y ratones
Expande la asignación de acciones IA_Look. Esta acción de entrada está vinculada al control del eje 2D del joystick derecho del mando de juego.
Solo necesita un modificador de zona muerta para filtrar los errores.
El personaje predeterminado tiene un contexto de asignación independiente para los controles de cámara basados en el ratón. Vuelve al Explorador de contenido y abre IMC_MouseLook. Este IMC crea vinculaciones para la acción de entrada IA_MouseLook, que es idéntica a IA_Look.
Si usas distintas acciones en el juego del joystick y del ratón, puedes tener distintos modificadores para cada entrada y tratarlos como rutas de entrada independientes. Sin embargo, en este tutorial combinarás todo en un solo contexto de asignación de entradas.
Expande la asignación de acciones IA_MouseLook. Esta acción en el juego está vinculada al control del eje XY en 2D del ratón.
La vinculación del control del ratón ya usa un eje 2D, por lo que el único modificador que necesita es una Negación en el eje Y para que el personaje mire hacia abajo cuando muevas el ratón hacia arriba. Esto es lo tradicional en los juegos en primera persona, pero puedes eliminar este modificador para invertir los controles de vista.
Modificar un contexto de asignación de entrada
Dado que acabas de empezar con un nuevo proyecto, combina todas las asignaciones de entrada en un solo contexto de asignación de entrada.
Para crear tu propio IMC basado en los contextos de asignación del jugador predeterminado, sigue estos pasos:
En el explorador de contenido, en la carpeta Contenido > Entrada, haz clic derecho en
IMC_Defaulty selecciona Duplicar.Llama al contexto de asignación
IMC_Adventurey haz doble clic sobre él para abrirlo.Expande la asignación IA_Look.
Haz clic en el botón del signo más que hay junto a IA_Look para añadir una nueva vinculación de control.
Haz clic en Ninguno para abrir la lista de valor fotogramas clave, expande Mouse y selecciona Mouse XY 2D-Axis.
En la vinculación de control del ratón, haz clic en el botón del signo más que hay al lado de Modificadores y cambia Ninguno a Negar.
Expande el modificador Índice [0] y anula la selección de X y Z. Este modificador solo debería negar el eje Y.
Guarda y cierra el contexto de asignación.
Para invertir los controles de tu cámara, puedes añadir o eliminar modificadores de negación de las vinculaciones de los controles del joystick o del ratón.
Siguiente
En la siguiente sección, hay más información sobre cómo el blueprint predeterminado del personaje conecta la entrada del jugador con el movimiento del personaje y podrás empezar a recrearlo con código.
Configuración del movimiento del personaje
Más información sobre cómo vincular la entrada del jugador al movimiento del personaje en C++.