Tabla de contenidos p>
Introducción h3>
Bienvenidos todos! No importa cuántos años pasan, los juegos de rol siguen siendo un género popular. Muchos desarrolladores sueño de hacer su propia, ya sea para experimentar con la mecánica nunca antes visto-o un simple deseo de contar una historia profunda e interactiva. Dada increíbles capacidades gráficas del Unreal Engine, también es una opción superior del motor para muchos la consecución de este fin de capturar el estilo estético único que buscan. P>
En este tutorial, vamos a estar dando los primeros pasos en este camino y le mostrará cómo crear un RPG de acción con el Unreal Engine. Se contará con un controlador de jugador de tercera persona, que puede moverse, saltar, atacar y bloquear, junto con un enemigo que va a perseguir al jugador y atacarlos. Este tutorial también cubrirá los fundamentos de la creación transiciones de animación para eso también. El proyecto que se muestra aquí puede ser una gran base para un juego mucho más grande, o simplemente una buena manera de aprender muchos de los sistemas en el Unreal Engine. De todos modos, si usted está listo para empezar a hacer sus propios juegos de rol, vamos a bucear en. P>
Si es tu primera vez que utiliza el motor, sin embargo, a continuación, le recomendamos ver nuestro tutorial de Unreal Engine para principiantes en primer lugar. P>
p>
No se pierda! extremos de la oferta en
- Accede a los más de 200 cursos li>
- Nuevos cursos añadió mensual li>
- Cancelar en cualquier momento li>
- Los certificados de terminación li>
Ul>
ACCESO ahora p>
Proyecto Archivos h3>
En este tutorial se va a utilizar unos modelos y animaciones de Mixamo. Usted puede elegir conseguir su propio, o descargar los que usaremos para el proyecto. P>
Además, se puede descargar el proyecto completo para ver cómo todos los niveles, modelos y planos de Interact. P>
Creación del proyecto h3>
Para empezar, vamos a crear un nuevo proyecto (que no es necesario incluir el contenido de arranque). Cuando el editor se abre, vamos a crear cuatro nuevas carpetas. P>
- Animaciones li>
- Blueprints li>
- Niveles li>
- Modelos li>
Ul>
Guardar el nivel actual de los Niveles em> carpeta como MainLevel strong>. P>
p>
A continuación, descargar los activos desde el principio del tutorial y extraer en cualquier lugar de su ordenador. P>
- En primer lugar, abrir los modelos Contenido de la carpeta carpeta y arrastrar el contenido en los modelos de nuestro proyecto folder.Import todos esos activos cuando es promovido a. Li>
- A continuación, haga lo mismo para los Contenidos de Animaciones preguntó Folder.When para seleccionar un esqueleto para la animación, elija el jugador del enemigo uno dependiendo de la animación. Li>
Ol>
Ahora debería tener ambos modelos y todas las animaciones enemigas y jugador necesarias para el tutorial. P>
p>
Antes de empezar a crear el jugador, tendremos que configurar las entradas de control. En el Configuración del proyecto strong> ventana ( Editar> Ajustes del proyecto … em>) hasta llegar a la fuerte> entrada < strong> pantalla. P>
A continuación, desea crear tres nuevos Asignaciones de acción em> y dos nuevos Eje Asignaciones em>. Rellenarlos como se ve en la imagen de abajo: p>
p>
Creación del jugador h3>
Es hora de crear nuestro jugador. En el Modelos strong> carpeta, cree un nuevo proyecto (clase padre de Carácter em>) llamado Reproductor strong>. Haga doble clic en él para abrir el editor de modelo. P>
Tenemos algunos componentes ya creados por nosotros. P>
- CapsuleComponent (colisionador) ArrowComponent (define la dirección de avance) Mesh (malla del esqueleto de nuestro jugador) li>
- CharacterMovement (movimiento, saltar, etc) li>
Ul>
En primer lugar, seleccionar el Mesh strong>. P>
- Establecer el esqueleto de malla a PlayerModel li>
- Establecer la ubicación a 0, 0, -90 li>
- establecer la rotación a 0, 0, -90 li>
Ul>
p>
Cuando se ataca, tendremos que comprobar si en realidad estamos chocar con nada. Esto se hará con un colisionador de daños. Crear un nuevo caja de colisión strong> componente y que sea un niño de la malla. P>
- Establecer la ubicación a -20, 100, 100 li>
- Definición de las extensiones de la caja de 20, 32, 32 li>
- Activar simulación genera eventos Hit li>
- Establecer la colisión predeterminadas para disparador li>
Ul>
p>
A continuación, tenemos que configurar la cámara. Con el fin de tenerlo órbita alrededor de nuestro jugador, vamos a crear una primera resorte del brazo strong> componente. Esto mantiene sus hijos a una distancia. P>
- Establecer la ubicación a 0, 0, 70 li>
- establecer la rotación a 0, -20, 0 li>
Ul>
p>
Como un niño del brazo de resorte, crear un Cámara strong> componente. P>
- Establecer la ubicación a 0, 60, 0 li>
Ul>
p>
Ahora que tenemos todo de nuestra configuración de componentes, podemos empezar con nuestras variables. P>
- Daños (entero) li>
- CurHp (entero) li>
- MaxHP (entero) li>
- banda (booleano) li>
- Bloqueo (booleano) li>
Ul>
A continuación, puede hacer clic en el strong> Compilar y relleno en algunos valores por defecto. P>
- Daño = 1 li>
- CurHp = 5 li>
- MaxHP = 5 li>
Ul>
p>
A continuación, vamos a volver al editor de niveles y crear un nuevo proyecto. Esto va a ser de clase padre GameModeBase em> y que va a ser llamado MyGameMode strong>. Abrirlo, y todo lo que vamos a hacer aquí es establecer la Hipoteca defecto Clase strong> a Reproductor em>. P>
p>
De vuelta en el editor de niveles, vamos a ir a la Ajustes World strong> panel y fijar el GameMode Ignorar strong> a nuestro MyGameMode em>. Ahora bien, cuando presiona el juego, el jugador debe desovar. P>
p>
Orbit Cámara Lógica h3>
Vamos a ir al gráfico de eventos a todos los jugadores y comenzar mediante la implementación de la funcionalidad de la órbita de la cámara. Esto nos permitirá mover el ratón alrededor, haciendo que la cámara de moverse por el jugador como en un juego en tercera persona. P>
La Evento Ratón Y strong> nodo se desencadena cuando se pasa el ratón hacia arriba y hacia abajo. Estamos creando una rotación a lo largo del eje Y y agregó que al brazo de resorte. Si usted presiona el juego, usted debe verlo en el trabajo. P>
p>
Uno de los problemas, sin embargo, es que podemos girar en todos los sentidos. Lo que tenemos que hacer, es sujetar la rotación. Evitar que se mueva demasiado y demasiado abajo. Vamos a estar usando el Clamp ángulo strong> nodo para sujetar el eje de rotación Y. Ahora bien, si usted presiona el juego, verá que hay un límite en donde se puede girar la cámara en posición vertical. P>
p>
Para la rotación horizontal, podemos usar simplemente evento de ratón X strong> nodo y enchufe que en el Añadir guiñada entrada del controlador strong> nodo. Esto rotará automáticamente el jugador en posición vertical. P>
p>
Ahora tenemos una órbita cámara completamente de trabajo. P>
Mover al jugador por h3>
Para el movimiento de los jugadores, estamos en primer lugar va a ser la comprobación de que el jugador está utilizando el Move_ForwardsBack em> eje de entrada. a continuación, vamos a comprobar si están actualmente atacante o bloqueadora. Si no es así, vamos a pasar en la dirección respectiva. P>
También puede seleccionar el CharacterMovement strong> componente para cambiar algunas de las propiedades de movimiento. P>
- Establecer la aceleración máxima a 1000 li>
- Establecer la velocidad máxima a 400 Walk li>
- Establecer el control de aire a 1,0 li>
Ul>
Ahora bien, si usted presiona el juego, usted debe ser capaz de moverse con relación hacia delante y volver a donde estás frente. P>
p>
El movimiento horizontal es básicamente el mismo, pero nosotros estamos verificando para el Move_LeftRight em> de entrada y el establecimiento de la dirección del vector mundo a la derecha del jugador. P>
p>
Si usted presiona el juego, usted debe ver que ahora podemos mover completamente alrededor. Puesto que estamos utilizando la clase de caracteres de los padres, que viene con un montón de cosas pre-hechos tales como saltar. Para llevar a cabo el salto, sólo tenemos que comprobar si estamos en la tierra, y dispare el nodo de salto. P>
p>
Atacar y bloqueo h3>
El jugador puede atacar y bloquear ataques entrantes. En primer lugar, para atacar comprobaremos para la entrada apropiada y asegurarnos de que estamos ya no atacar o bloquear. A continuación, vamos a establecer la variable de atacar a verdadero, espera 1,5 segundos (la duración de la animación de ataque) y la puso de nuevo a falso. P>
p>
Es similar para el bloqueo. Vamos a comprobar para la entrada, asegúrese de que no estamos atacando a continuación, establezca la variable de bloqueo en true. Cuando soltamos el botón, vamos a establecer a false. P>
p>
He aquí un resumen de todo lo que debe tener en el gráfico hasta el momento. Me he comentado las diferentes secciones para que sea más fácil de leer. Usted puede hacer esto mediante la selección de un grupo de nodos, a continuación, hacer clic derecho y haciendo clic en Crea comentario a partir de la selección strong>. P>
< / p>
animaciones de los jugadores h3>
Tenemos nuestra configuración jugador pero el modelo es estático. Para solucionar este problema, vamos a ir a la Modelos em> carpeta y crear una nueva > Animación Blueprint em>. Cuando se pide un esqueleto, elegir el modelo de reproductor. Llamar al plan PlayerAnimator strong>. P>
p>
Haga doble clic para abrirlo. En primer lugar, vamos a crear una nueva máquina de estados (botón derecho del ratón y crear nodo de máquina de estados). Tapar esto en el Salida Pose strong>. Una máquina de estados determina básicamente lo que la animación para jugar en base a entradas dadas (nos estamos moviendo? Atacar? Bloquear?). P>
p>
Haga doble clic en la máquina de estados para abrirlo. Aquí es donde vamos a conectar los 7 animaciones que tenemos. Arrastre en como tal, y conectar el nodo de entrada a la animación de inactividad. P>
p>
En la parte inferior izquierda podemos crear las variables que usaremos. Todos estos son booleanos. P>
p>
Empecemos con la animación de inactividad. Conectar a que todas las otras animaciones que pueden hacer la transición a. P>
p>
Se verá que cada conexión tiene un botón blanco círculo. Haga doble clic en la transición de ejecución hacia delante, que nos llevará a un gráfico donde podemos configurar una condición. Esto va a devolver verdadero o falso de si o no podemos entrar en la transición. P>
p>
A continuación, puede volver a la máquina de estados. Seleccione la transición que acaba de hacer y haga clic en Promover a Compartida strong>. Llamarlo Para Adelante strong>. Esto es básicamente una regla de transición salvado podemos utilizar de nuevo sin necesidad de volver a entrar en el mismo gráfico. P>
p>
Vamos a ir adelante y rellenar el resto de las transiciones apropiadas. P>
p>
Tenemos las transiciones de la animación de inactividad, pero ¿qué hay de nuevo a él? Crear una transición de cada animación, de nuevo a marcha lenta. La condición va a ser el mismo que el que va a la misma, pero con un no nodo en el medio. Básicamente lo contrario. P>
p>
A partir de aquí, todas las animaciones son más o menos lo mismo en la forma en que están conectados, a excepción de la Player_Block strong> una. Para ello, sólo podemos transición de vuelta al estado de reposo. Por lo tanto crear una transición de todas las otras animaciones, usando el Para bloqueo strong> regla de transición. P>
p>
Para el resto de las animaciones, queremos crear una transición hacia y desde todos los demás animación como ya tenemos con la animación de inactividad. Sólo asegúrese de que no hay transición de regreso de la animación bloque. P>
Esto es lo que la máquina de estado final debe ser similar. Básicamente para cada animación -. Pensar lo que puede animaciones transición a p>
p>
Tenemos la configuración de las animaciones, pero no hay lógica detrás de establecer las variables todavía. Ir a la gráfica de eventos strong> , y hay dos nodos por defecto. Cada marco, queremos emitir el dueño del peón a una clase de jugador para que podamos acceder a sus propiedades. P>
p>
Lo que queremos hacer es conseguir la velocidad del jugador. Vamos a utilizar esto para determinar en qué dirección nos estamos moviendo en, por lo que podemos decidir qué animación para jugar. El nodo de secuencia puede desencadenar una serie de diferentes nodos secuencialmente. Haga clic en Añadir pin strong> por lo que tenemos 5 salidas. P>
p>
Así es como queremos establecer los valores booleanos en movimiento. P>
p>
Los booleanos atacantes y bloqueadoras será simplemente basarse en respectivas variables de nuestro jugador. P>
p>
Por último, de vuelta en el Reproductor strong> modelo seleccionar el Mesh strong> componentes y establecer el Anim Clase strong> a PlayerAnimator em>. p>
p>
Ahora debería ser capaz de ver las animaciones jugar en el juego! P>
Volumen de navegación h3>
Antes de crear el enemigo, tendremos que configurar el NAV malla. Esto permite una IA para moverse libremente a través de un medio, en torno a navegar y por encima de obstáculos. En el Modos strong> Panel, busque el Nav malla límites de volumen strong> y arrastre de objetos que, en. P>
- Establecer la ubicación a 0, 0, 150 li>
- Set la X e Y a 2000 li>
- Establecer la Z a 500 li>
Ul>
También aumentó el tamaño de la planta. Puede pulsar P strong> para cambiar la visibilidad de navegación de malla. P>
p>
Creación del Enemigo h3>
Modelos strong> carpeta, crear un nuevo modelo de tipo Carácter em>. Llamarlo Enemigo strong>. En el modelo, sólo vamos a modificar el componente de malla. P>
- Establecer la malla estática a EnemyModel li>
- Establecer la ubicación a 0, 0, -90 li>
- establecer la rotación a 0, 0, -90 li>
Ul>
p>
Ahora, para las variables. P>
- Salud (entero) li>
- Daños (entero) li>
- banda (booleano) li>
- Dead (booleano) li>
- Target (Jugador) li>
Ul>
p>
Gráfico de eventos strong>, estamos en primer lugar va a conseguir al jugador. P>
p>
A continuación, cada cuadro vamos a utilizar el AI ir a strong> nodo. Esto utilizará el navegador via malla para mover al enemigo hacia el jugador. Asegúrese de ajustar la Aceptación Radio strong> a 150 em> para que el enemigo no va a ir dentro del reproductor. P>
p>
La El éxito strong> de salida se activa una vez que el enemigo llegue al jugador. Cuando esto sucede vamos a permitir que la variable atacar si podemos, espere 2,667 segundos (ataque duración de la animación), a continuación, volver a habilitar la variable atacar. P>
p >
Seleccione el CharacterMovement strong> componente. P>
- Establecer la aceleración máxima de 300 li>
- Establecer la velocidad máxima a 250 Walk li>
Ul>
p>
De vuelta en el editor de niveles, que puede arrastrar en un enemigo, juego de la prensa y probarlo! P>
Enemy Animaciones h3>
Al igual que con el jugador, crear un nuevo proyecto de animación llamado EnemyAnimator strong>. Asegúrese de que también va a asociar el esqueleto enemigo. P>
p>
Dentro de la animación enemigo, crear una nueva máquina de estados, a continuación, haga doble clic en él para entrar. P>
p>
Comenzar con las variables. P>
- Mover (Boolean) li>
- banda (booleano) li>
- Dead (booleano) li>
Ul>
A continuación, puede arrastrar en los 4 animaciones. Conecte la entrada a la animación de inactividad. P>
p>
Gancho las transiciones hacia arriba como la de abajo. Asegúrese de que la animación de morir no tiene transiciones de salida. P>
p>
Para evitar que la animación de morir a causa de bucle – doble clic en él, seleccionarlo y desactivar bucle de animación strong> p>.
p>
Gráfico de eventos strong>, vamos a querer conectarlo como este. P>
p>
Finalmente, de nuevo en el Enemigo strong> modelo, seleccionar la malla y establecer el Anim Clase strong> a EnemyAnimator em>. P>
p>
dañar el Enemigo h3>
Ahora vamos a poner en práctica la capacidad para el jugador para dañar al enemigo. En el Enemigo strong> modelo, vamos a crear una nueva función llamada TakeDamage. Strong> Crea una entrada de tipo entero llamado DamageToTake em>. P>
p>
Esto se llamó en el Reproductor strong> modelo. Ahí, crear una nueva función llamada TryDealDamage strong>. Esto hará que una gran variedad de enemigos solapados del colisionador daños. Sólo vamos a llamar a su función reciben daño. P>
p>
La TryDealDamage strong> función será llamada cuando nuestros “éxitos” de animación del objetivo. Así que vamos a ir a nuestra PlayerAnimator strong> y haga doble clic en el Player_Attack em> animación para abrirlo. Mover el cabezal de juego a donde queremos atacar. Haga clic derecho en la línea de tiempo y seleccione notfies Añadir Notificar> Nueva Notificar em>. Llame a este TryDamage strong>. Una notificación es básicamente un evento personalizado que desencadena en un cierto punto en la animación. P>
p>
Durante la PlayerAnimator strong> gráfico de eventos, podemos crear el strong> nodo AnimNotify_TryDamage. Sólo queremos lanzar el reproductor de nuevo y llamar a la función TryDealDamage. P>
p>
Ahora debería ser capaz de juego de la prensa y derrotar al enemigo. P>
Atacar el jugador h3>
Ahora tenemos que poner en práctica la capacidad del enemigo para atacar también. En el Reproductor strong> modelo, vamos a empezar con la creación del strong>, función TakeDamage. Esto tendrá una entrada de tipo entero llamado DamageToTake em>. Cuando la salud del jugador llega a 0, el nivel se reiniciará. P>
p>
Enemigo strong> modelo, crear una nueva función llamada TryAttack strong>. Aquí, sólo estamos comprobando nuestra distancia del jugador y si está dentro de un rango, vamos a hacer daño. P>
p>
Por último, tenemos que ir a la EnemyAnimator strong> modelo, haga doble clic en el Enemy_Attack strong> animación y crear un notificar en el punto de daño. P>
p>
En el gráfico de eventos enemigo animador, podemos crear el nodo de notificar caso y tratar de ataque como tal. P>
p>
Ahora usted puede presionar el juego y probarlo! P>
La fijación de un par de cosas h3>
Usted puede notar que cuando el enemigo ataca, su cámara problemas técnicos fuera un poco. Esto se debe a que la cámara se mueve automáticamente en función de si hay algo entre ella y el jugador. Ir a la Reproductor strong> modelo, seleccione el brazo de resorte y desactivar Do colisión de prueba strong>. P>
p>
También puede querer que el enemigo siempre se enfrenta al jugador. Para solucionar esto, podemos ir a la Enemigo strong> modelo y agregar estos nodos de la ruta caso garrapata. P>
p>
Conclusión h3>
Y hay que ir! Ahora tenemos un juego de rol de acción de trabajo! p>
A través de este tutorial, hemos creado un controlador de tercera persona jugador, una cámara giratoria, IA de los enemigos, las máquinas de estado de animación, y más – todo ello utilizando el Unreal Engine y planos. Con estas bases en su lugar, el proyecto puede ampliar fácilmente en caso de que desee añadir más niveles, enemigos, o una variedad de otras características. Puede, por supuesto, utilizar los fundamentos cubiertos aquí para crear otros diferentes tipos de juegos. P>
De cualquier manera, esperamos que hayan disfrutado el tutorial, y buena suerte con sus proyectos de juegos! P>
p>
Mensajes relacionados h3>
- Mover (Boolean) li>
- Establecer la aceleración máxima de 300 li>
- Salud (entero) li>
- Establecer la malla estática a EnemyModel li>
- Establecer la ubicación a 0, 0, 150 li>
- Establecer la aceleración máxima a 1000 li>
- Daño = 1 li>
- Daños (entero) li>
- Establecer la ubicación a 0, 60, 0 li>
- Establecer la ubicación a 0, 0, 70 li>
- Establecer la ubicación a -20, 100, 100 li>
- Establecer el esqueleto de malla a PlayerModel li>
- CapsuleComponent (colisionador) ArrowComponent (define la dirección de avance) Mesh (malla del esqueleto de nuestro jugador) li>
- En primer lugar, abrir los modelos Contenido de la carpeta carpeta y arrastrar el contenido en los modelos de nuestro proyecto folder.Import todos esos activos cuando es promovido a. Li>
- Animaciones li>