Aprenderemos lo necesario para tener una IA básica en funcionamiento en Unreal Engine 4.

Es recomendable que se tenga cierta familiaridad con el entorno de Unreal antes de realizar este tutorial.

Objetivos

  • Aprender los componentes básicos para poner en marcha una IA.
  • Conseguir que un NPC nos siga.

Introducción

Lo primero es lo primero, necesitamos un nivel para poner a prueba nuestra IA, y para este tutorial crearé un proyecto en tercera persona.

IA captura1

Una vez que ya tenemos el proyecto creado, pondremos en el nivel a nuestro NPC y, para no complicarnos, será una copia del personaje que vamos a controlar (para hacer una copia rápida haz click en el personaje en pantalla y manteniendo pulsado Alt, desplázalo a un lado).
Lo siguiente que necesitamos en el nivel es poner el NavMesh Bounds Volume que será el encargado de calcular el pathfinding para que nuestra IA pueda moverse y esquivar obstáculos.

IA captura2

Ajusta el tamaño para que ocupe todo el escenario y, para saber si se ha colocado bien el NavMesh, pulsa “P”. Se mostrará en verde la superficie pisable por la IA.

IA captura3

Creación de un controlador IA

Existen dos formas de controlar a un personaje:

  • Que el jugador lo controle directamente (ratón, teclado, mando…). En este caso el playerController poseerá al personaje
  • Que la IA lo controle. En este otro caso el AIController poseerá al personaje

Si el personaje es un NPC nos interesa desarrollar la segunda opción y para ello, crearemos nuestro AIController.  Para ello, pulsa click derecho donde quieras crearlo dentro del Content Browser y selecciona Blueprint Class, busca la clase AIController y creala.

IA_captura3

Ahora que ya tenemos nuestro AIController, en el event graph pondremos un event tick que llame continuamente al AI Move To.

AI Move To

El AI Move To es un nodo asíncrono, esto significa que creará un hilo aparte para no dejar bloqueado al hilo principal.
La primera línea de ejecución en la salida del nodo permite seguir con el hilo principal y los otros dos (On Success y On Fail) siguen con el hilo secundario.
Este nodo tiene varios parámetros de entrada y salida que es interesante conocer:

IA captura3

Entradas

  • Pawn: Qué personaje quieres que haga el movimiento.
  • Destination: Posición absoluta donde quieres mover al pawn. Este parámetro se tendrá en cuenta si “Target Actor” lo dejas a Null.
  • Target Actor: Personaje al que quieres que siga tu pawn.
  • Acceptance Radius: Distancia en unreal units que quieres mantener entre tu pawn el punto destino.
  • Stop On Overlap: Al hacer overlap con el punto destino, el pawn se parará si está a true.

Salidas

  • Movement Result: Resultado del movimiento
    • Success: Movimiento realizado correctamente. Hilo secundario continua por On Success.
    • Blocked: Existe un camino para alcanzar el punto destino pero no puede continuar porque se ha quedado atascado. Hilo secundario continua por On Fail.
    • Off Path: No existe un camino para alcanzar el punto destino. Hilo secundario continua por On Fail.
    • Aborted: Cancelada la orden de movimiento. Hilo secundario continua por On Fail.
    • Invalid: Alguno de los parámetros de entrada es inválido. Hilo secundario continua por On Fail.

Puesta a punto

Ahora que sabemos como funciona el nodo AI Move To, vamos a usarlo de manera que nuestro NPC nos siga.
En la entrada Pawn le introduciremos al NPC y como él está siendo controlado por nuestro AIController, usaremos el nodo Get Controlled Pawn cuyo target es Self ya que estamos dentro del Blueprint del AIController.
En la entrada Target Actor le introduciremos al personaje que estamos controlando y como él está siendo controlado por el PlayerController , usaremos el nodo Get Controlled Pawn cuyo target es el PlayerController
En la entrada Acceptance Radius le introduciremos un valor de 500 por ejemplo, ya que si lo dejamos a 0, se pegará a nosotros de forma molesta.

IA captura3

Por último debemos irnos a la ventana principal, hacer click en nuestro NPC y en el submenú Pawn desactivamos el Auto Possess Player y en AI Controller Class ponemos nuestro AIController.

Algunos consejos

Si has tenido algún problema con la IA, alguno de estos consejos podría acercarte a la solución:

  • Imprime el Movement Result para depurar la IA, podría darte una pista de qué anda mal.
  • ¿No se mueve el personaje? Procura que la posición a la que se tiene que mover esté dentro del NavMesh ya que si no es así, no se moverá.
  • ¿No ves el NavMesh? Haz click en Build Paths dentro del menú de Build en la ventana principal.

Y ya está listo, si toda va bien, tendréis al NPC siguiendo al personaje que controlas. Si os ayudó este post o tenéis alguna duda, dejad un comentario.

Deja un comentario

Tu email no será publicado. Campos obligatorios marcados con *