Aprendiendo IA en Unity con NavMesh

Find AI Tools
No difficulty
No complicated process
Find ai tools

Aprendiendo IA en Unity con NavMesh

Contenidos:

  1. ¿Qué es el aprendizaje automático?
  2. Implementación básica de IA en Unity
  3. Creando el terreno y el personaje
  4. Configurando el agente NavMesh
  5. Creando waypoints y navegación
  6. Script de movimiento para el personaje
  7. Personalización de los parámetros de la IA
  8. Integración de un controlador personalizado
  9. Utilizando NavMesh para el enemigo del juego
  10. Uso de animaciones y movimiento del personaje

🤖 Implementación básica de IA en Unity

En este Tutorial, aprenderemos cómo implementar una IA básica que camina sobre una malla de navegación en Unity. Al finalizar esta primera parte, tendremos un pequeño Capsule que caminará hasta varios waypoints que hemos establecido, y navegará hacia ellos correctamente.

¿Qué es el aprendizaje automático?

El aprendizaje automático (IA) es una rama de la informática que se enfoca en desarrollar algoritmos y sistemas capaces de aprender y tomar decisiones sin ser programados explícitamente. Utilizando técnicas como el procesamiento de datos, el análisis estadístico y el reconocimiento de patrones, los sistemas de IA pueden adquirir conocimiento y realizar tareas de manera autónoma.

Creando el terreno y el personaje

Para comenzar, debemos crear un proyecto en blanco en Unity y tener un terreno previamente diseñado. Agregaremos un Mesh Collider al terreno para que el personaje pueda caminar sobre él, y luego añadiremos una cápsula para representar al personaje. Posicionaremos la cápsula en alguna parte del terreno y le añadiremos un RigidBody para que la gravedad lo afecte al caminar. Además, agregaremos un NavMesh Agent, que es el componente principal de la IA de navegación en Unity.

Es importante tener en cuenta que este tutorial está basado en Unity 2022, donde la navegación de IA es un paquete separado. Si estás utilizando una versión anterior, es posible que estos pasos varíen ligeramente.

Configurando el agente NavMesh

El siguiente paso es añadir un objeto vacío al terreno y elevarlo un poco sobre el suelo. A este objeto le agregaremos un NavMesh Surface y realizaremos el proceso de "bake" (hornear) para generar la malla de navegación. Una vez completado, el terreno se volverá azul para mostrar todas las áreas transitables para el personaje.

Elevar el objeto vacío es importante para ayudar al sistema de navegación a encontrar todas las superficies correctamente. En mi experiencia, cuando el NavMesh Surface está a nivel o por debajo de la geometría del terreno, algunas superficies pueden no ser detectadas correctamente.

Creando waypoints y navegación

A continuación, crearemos algunos waypoints para establecer la ruta de navegación del personaje. Estos waypoints serán objetos vacíos ubicados estratégicamente en el terreno, y asegurándonos de que el personaje pueda alcanzarlos.

Luego, añadiremos estos waypoints a una lista en un script llamado "BasicNavMeshAI". En este script, se utilizará la función SetDestination() del NavMeshAgent para establecer el primer waypoint como destino inicial. En el bucle FixedUpdate(), se verificará la distancia entre el personaje y el waypoint actual. Si la distancia es menor a un umbral establecido, se pasará al siguiente waypoint. Si se alcanza el último waypoint, se volverá al primero para crear un ciclo de navegación continua.

Script de movimiento para el personaje

A continuación, crearemos un script llamado "CustomCharacterController" para controlar el movimiento del personaje utilizando su propio controlador de personajes en lugar del NavMeshAgent. En este script, desactivaremos las actualizaciones de posición y rotación del NavMeshAgent y nos encargaremos de mover el personaje nosotros mismos.

Dentro de este script, utilizaremos la función Move() para obtener la dirección de movimiento del personaje utilizando el NavMeshAgent. Luego, aplicaremos esta dirección multiplicada por la velocidad correspondiente al estado actual del personaje. Si el personaje está en modo de huida, se moverá más rápido, mientras que si está vagando, se moverá más lento.

Es importante tener en cuenta que en este caso, utilizaremos nuestro propio controlador de personajes y animaciones en lugar del NavMeshAgent. Sin embargo, las funcionalidades básicas mostradas anteriormente seguirán siendo útiles para establecer la ruta y la navegación del personaje.

Personalización de los parámetros de la IA

En el componente del agente NavMesh, podemos ajustar varios parámetros para personalizar el comportamiento de la IA. Podemos modificar la velocidad, la capacidad de aceleración, el frenado, el tiempo de rotación y otros aspectos para adaptarlos a nuestras necesidades específicas. Estos parámetros pueden ser ajustados para lograr un comportamiento más realista o adaptarse a diferentes situaciones en el juego.

Integración de un controlador personalizado

En el siguiente paso, mostraremos cómo integrar un controlador personalizado con las funcionalidades de la IA de navegación. En este ejemplo, utilizaremos un enemigo del juego con su propio controlador de personajes, pero que aprovecha la navegación NavMesh para moverse.

En este caso, el enemigo no utiliza waypoints, sino que realiza una rutina de vagabundeo y selecciona puntos aleatorios a los que caminar. Cuando el jugador se acerca lo suficiente, el enemigo intentará atacarlo estratégicamente. Si el enemigo resulta herido, intentará huir. Esta integración puede ser útil para situaciones más complejas en las que se requiera un comportamiento más avanzado.

Uso de animaciones y movimiento del personaje

Por último, mostraremos cómo utilizar animaciones y controlar el movimiento del personaje en función de la dirección y velocidad del mismo. Podemos utilizar las funciones y propiedades del controlador de personajes junto con el componente Animator para reproducir las animaciones adecuadas, como caminar, correr, disparar, etc.

Es importante ajustar la velocidad de las animaciones de acuerdo a la velocidad del personaje, para lograr una apariencia coherente y realista. Al combinar la navegación NavMesh con un controlador personalizado, podemos crear personajes con movimientos suaves y naturales, y con animaciones sincronizadas y realistas.

En resumen, en este tutorial hemos aprendido cómo implementar una IA básica en Unity utilizando la navegación NavMesh. Hemos creado waypoints, establecido la ruta de navegación, y controlado el movimiento del personaje utilizando un controlador personalizado. También hemos aprovechado animaciones y ajustado parámetros para personalizar el comportamiento de la IA.

Espero que este tutorial te haya proporcionado una introducción útil al mundo de la IA en Unity. Recuerda que estos conceptos también pueden aplicarse en versiones anteriores de Unity, con leves diferencias en la implementación.

¡Gracias por seguir este tutorial y espero que hayas disfrutado el proceso de aprendizaje! Si te ha gustado, no olvides dejar un "me gusta" y revisar mi juego "niche.io verily".

Recursos:

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.