Cómo hacer IA para un personaje volador

Su mejor opción es extender su búsqueda de ruta en un dominio volumétrico utilizando un campo booleano 3d, es decir, voxels que son verdaderos o falsos, sólidos / aéreos, ocupados / abiertos. He hecho esto y puedes hacer una cantidad sorprendente de él muy rápidamente con un algoritmo A * básico en C #. Solo asegúrate de ejecutarlo en un hilo separado.

O bien, puede hacer un sistema de dirección / colisión ad-hoc basado en la física en el que dirija la IA utilizando matemáticas y fuerzas vectoriales y deje que la colisión Physx se encargue de mantenerla fuera de los arbustos.

Con este método, tus enemigos lucharán para sortear entornos complejos y se atascarán (cualquier cosa convexa será mala). Agregar algo de aleatorización a su patrón de vuelo (en la dirección de la meta) puede ayudarlos a despegarse, pero nunca será tan bueno como una ruta volumétrica.

Prefiero que los agentes de IA se muevan de manera consistente con el jugador. Limitando las acciones las que serían posibles por el jugador. Si el jugador tiene un joystick / yugo que alimenta el sim. Es bueno que la IA también vuele con un yugo virtual. Configuración de parámetros de entrada, como banco y timón.

La IA para dicha entidad piloto es responsable de seleccionar los valores de entrada del yugo que resultan en un movimiento deseable.

Puede hacer esto usando el código del simulador. Para una entrada de yugo propuesta dada, puede hacer avanzar el simulador a tiempo y ver dónde terminaría. Esto puede ayudarlo a evitar colisiones y mover la IA a una ubicación u orientación objetivo. Y si utiliza el código del simulador, si modifica el modelo de física, la IA se mantendrá al día.

Esta llamada del sim puede ser costosa. Entonces, el truco es hacer un poco de búsqueda en cada tic. No busca todos los estados de entrada posibles. Busque de manera restringida si todo está bien (buscando solo pequeños ajustes): busque de manera más amplia si hay algo mal.

Puedes crear un volumen de navegación. La misma idea que navmesh, pero 3d en lugar de 2d (por lo tanto, mucho más trabajo para implementar).

O puede utilizar un enfoque de décadas y utilizar el sistema de navegación de waypoints. Los puntos de referencia no tienen que estar sentados en el suelo, pueden extenderse por toda el área donde se supone que vuelan los drones controlados por ai.

AGREGADO: Espera un segundo, ¿estás usando unity navmesh? En caso afirmativo, ir a por waypoints será definitivamente el camino a seguir si no tiene experiencia en la implementación de pathfinding. Claro, los waypoints, navmesh y navvolume usan el mismo algoritmo subyacente, el algoritmo Dijkstra, pero la búsqueda de rutas basada en waypoints es mucho más fácil de implementar.

Lanzaría un montón de rayos de intersección del entorno en direcciones bien distribuidas (en una esfera) y proporcionaría una fuerza en la dirección opuesta al rayo, con una fuerza inversamente proporcional a la distancia a la que regresa la función de trazado de rayos.

Junto con una fuerza suave en la dirección de donde se dirige el dron, el comportamiento resultante se verá inteligente, evitando el control de obstáculos.