Lograr que los enemigos de un juego 2D persigan al jugador de forma fluida y esquiven obstáculos no requiere escribir algoritmos complejos desde cero. Gracias al asset gratuito A*Star Pathfinding Project, es posible implementar un sistema de navegación potente y flexible en pocos pasos, obteniendo resultados notablemente superiores al movimiento básico con matemáticas manuales.
¿Qué es A*Star y cómo se instala en Unity?
A*Star es un proyecto de pathfinding en 2D y 3D creado por Aaron Grunberg que permite gestionar la navegación de agentes de forma sencilla y eficiente [0:08]. Su versión gratuita se descarga desde la página oficial como un Unity Package.
Para instalarlo basta con:
- Abrir el proyecto en Unity.
- Hacer doble clic sobre el paquete descargado.
- Importar todos los assets incluidos [0:42].
Una vez importado, aparece una carpeta con todos los componentes necesarios para configurar la navegación.
¿Cómo se configura la cuadrícula de navegación en 2D?
El primer paso es crear un objeto vacío en la escena y nombrarlo grid o cuadrícula [1:10]. A este objeto se le agrega el componente Pathfinder, que es el núcleo de A*Star encargado de generar el espacio navegable.
¿Qué ajustes necesita el grid graph?
Dentro de Pathfinder, en la pestaña Graphs, se genera un grid graph [1:23]. Como el proyecto es 2D, es fundamental activar la opción 2D en Settings para que la cuadrícula se oriente correctamente.
Los ajustes principales incluyen:
- Aumentar los nodos para que la cuadrícula cubra la mayor parte de la cámara [1:44].
- Reducir la profundidad para que los enemigos no se salgan de pantalla.
- Activar usar físicas en 2D y configurar el tipo de collider como círculo [2:27].
- En la sección Debug, establecer path logging: none para evitar mensajes innecesarios en consola [2:03].
Finalmente, al presionar el botón Scan en el inspector, toda la cuadrícula se convierte en un espacio navegable que se visualiza en color azul [2:15].
¿Cómo se configura un enemigo para que use pathfinding?
Con la cuadrícula lista, el siguiente paso es preparar al enemigo. En el ejemplo se selecciona el avión amarillo y se renombra como Yellow Enemy [2:47].
¿Qué componentes necesita el agente enemigo?
Se le agregan dos componentes clave:
- AI Path: controla el movimiento del agente por la cuadrícula. Al añadirlo, también se agrega automáticamente un componente llamado Seeker, que se encarga de buscar el camino óptimo dentro del grid [2:55]. Es necesario cambiar la orientación del eje Z al eje Y para juegos en 2D [3:12].
- AIDestinationSetter: permite fijar un objetivo o target. En su campo transform se asigna el player para que el enemigo lo persiga constantemente [3:38].
Dentro de AI Path se pueden modificar parámetros como la velocidad máxima, la velocidad de rotación y la capacidad de rotación [3:22]. Por ejemplo, multiplicar la velocidad de rotación por tres (escribiendo 360*3 directamente en la casilla) hace que el avión gire mucho más rápido [4:38].
¿Cómo se resuelven errores comunes al importar assets?
Al importar paquetes externos es habitual que aparezcan errores de editor relacionados con ventanas que no se renderizan correctamente [3:58]. Si el error no es crítico, se soluciona simplemente presionando Clear en la consola.
Un detalle importante es configurar la gravedad del componente en None [4:17]. Sin este ajuste, el enemigo caerá por la pantalla en lugar de navegar por el espacio 2D.
¿Cómo verificar que el pathfinding funciona correctamente?
Para comprobar el movimiento del enemigo se utiliza la ventana Scene, donde se puede observar la dirección hacia la que se dirige el agente [4:05]. Internamente, AI Path funciona de manera similar al script manual creado previamente: utiliza un Rigidbody, una velocidad y una velocidad de rotación, pero abstrae toda esa lógica en una interfaz más cómoda.
Al comparar ambos enemigos en funcionamiento, el avión controlado por A*Star se mueve de forma más fluida que el que usa matemáticas escritas a mano [4:28]. La clave está en encontrar los valores de velocidad y rotación que generen un equilibrio: que no sea demasiado fácil escapar de los enemigos, pero tampoco imposible.
¿Qué configuración de AI Path y de player funcionó mejor en tu proyecto? Comparte tus valores en los comentarios.