Actualmente, mi marco de IA muy básico tiene agentes que se mueven a lo largo de un camino irregular formado por una serie de puntos.
Lo hacen simplemente moviendo su posición de un punto al siguiente. Cuando alcanzan el siguiente punto, se mueven hacia el siguiente y así sucesivamente. ¿Cómo puedo cambiar esto para que se muevan suavemente a lo largo de una versión curva de la ruta, y cómo genero la curva?
mathematics
algorithm
path-finding
Sir Yakalot
fuente
fuente
Respuestas:
Estás buscando algún tipo de suavizado de caminos. Por supuesto, como señaló Bummzack, también desea asegurarse de que cualquier suavizado de ruta que realice resulte en movimientos legales para sus agentes.
Este artículo de Gamasutra explica casi todo lo que necesita saber, incluido el suavizado de caminos, giros legales y algoritmos de giro realistas y suaves.
Otra alternativa, que es un poco más simple, es usar un comportamiento de Búsqueda con un pequeño círculo / esfera delimitadora para verificar si el agente está en el próximo punto del camino o cerca de él.
fuente
Como ya conoce sus puntos de control, solo necesita actualizar su código de interpolación para usar un algoritmo de curvatura (Hermite o Coseno, por ejemplo).
Estos sitios ofrecen una gran explicación y un código de muestra que debería ayudarlo a comenzar:
Métodos de interpolación de Paul Bourke
Sol :: Tutoriales - Trucos de interpolación
fuente
Voy a ir contra la corriente aquí y sugerir que, en lugar de pregenerar sus curvas, solo lo maneje cuadro por cuadro, usando (por ejemplo) la misma lógica que usaría para crear un recorrido de referencia. -missile .
Esto será mucho más fácil y probablemente más realista porque no necesita casos especiales para cuando hay paredes entre dos puntos: simplemente maneja la detección de colisiones como de costumbre.
La desventaja es que el movimiento se verá subóptimo. El objeto siempre tomará la ruta más directa de un punto de referencia al siguiente, lo que significa que, a diferencia de una spline, no comenzará a girar hacia el punto de referencia 3 hasta que ya haya pasado el punto de referencia 2. Dependiendo de su situación, esto puede o no sea reparable ajustando sus puntos de referencia (si es incluso un problema).
fuente
El buscador de ruta debe proporcionarle la ruta y no debe modificarla. Creo que es posible modificar el algoritmo del buscador de ruta para tener en cuenta que la ruta con curvas cerradas es mejor que aquellas con curvas suaves, como ya ocurre con la ruta larga frente a las curvas cortas.
Publicaré aquí alguna solución si puedo encontrar un momento para pensarlo profundamente, pero creo que este es el camino a seguir.
fuente