Los comportamientos de dirección apuntan a ayudar a los personajes autónomos a moverse de una manera realista, mediante el uso de fuerzas simples que se combinan para producir una navegación improvisada y realista en el entorno de los personajes. En este tutorial cubriré la teoría básica detrás de buscar El comportamiento de la dirección, así como su implementación..
Las ideas detrás de estos comportamientos fueron propuestas por Craig W. Reynolds; no se basan en estrategias complejas que involucran la planificación de rutas o cálculos globales, sino que utilizan información local, como las fuerzas de los vecinos. Esto los hace fáciles de entender e implementar, pero aún así pueden producir patrones de movimiento muy complejos..
Nota: Aunque este tutorial está escrito con AS3 y Flash, debería poder utilizar las mismas técnicas y conceptos en casi cualquier entorno de desarrollo de juegos. Debes tener una comprensión básica de vectores matemáticos.
La implementación de todas las fuerzas involucradas en los comportamientos de dirección se puede lograr utilizando vectores matemáticos. Dado que esas fuerzas influirán en la velocidad y la posición del personaje, es un buen enfoque usar vectores para representarlos también..
Aunque un vector tiene una dirección, se ignorará cuando esté relacionado con la posición (supongamos que el vector de posición apunta a la ubicación actual del personaje).
La figura de arriba representa un personaje posicionado en (x, y)
con una velocidad (a, b)
. El movimiento se calcula utilizando la integración de Euler:
posición = posición + velocidad
La dirección del vector de velocidad controlará hacia dónde se dirige el personaje, mientras que su longitud (o magnitud) controlará cuánto moverá cada fotograma. Cuanto mayor es la longitud, más rápido se mueve el personaje. El vector de velocidad se puede truncar para garantizar que no sea mayor que un cierto valor, generalmente la velocidad máxima. A continuación se muestra una prueba que muestra ese enfoque.
El cuadrado rojo se está moviendo hacia un objetivo (el cursor del mouse). Este patrón de movimiento ilustra la buscar comportamiento sin Cualquier fuerza de dirección se está aplicando hasta el momento. La línea verde representa el vector de velocidad, calculada de la siguiente manera:
velocidad = normalizar (destino - posición) * max_velocity
Es importante notar que sin la fuerza de dirección, el personaje describe rutas rectas y cambia instantáneamente su dirección cuando el objetivo se mueve, haciendo una transición abrupta entre la ruta actual y la nueva..
Si solo hubiera una fuerza de velocidad involucrada, el personaje seguiría una línea recta definida por la dirección de ese vector. Una de las ideas de los comportamientos de dirección es influir en el movimiento del personaje agregando fuerzas (llamadas fuerzas de dirección). Dependiendo de esas fuerzas, el personaje se moverá en una u otra dirección..
Para el comportamiento de búsqueda, la adición de fuerzas de dirección al carácter cada fotograma hace que ajuste su velocidad sin problemas, evitando cambios repentinos de ruta. Si el objetivo se mueve, el personaje gradualmente cambia su vector de velocidad, tratando de alcanzar el objetivo en su nueva ubicación.
El comportamiento de búsqueda implica dos fuerzas: velocidad deseada y gobierno:
los velocidad deseada es una fuerza que guía al personaje hacia su objetivo utilizando el camino más corto posible (línea recta entre ellos; anteriormente, esta era la única fuerza que actuaba sobre el personaje). los gobierno la fuerza es el resultado de la velocidad deseada sustraída por la velocidad actual y también empuja al personaje hacia el objetivo.
Esas fuerzas se calculan de la siguiente manera:
desired_velocity = normalizar (destino - posición) * max_velocity direction = desired_velocity - speed
Una vez calculada la fuerza de la dirección, se debe agregar al personaje (se agregará a la fuerza de la velocidad). La adición de la fuerza de dirección a la velocidad en cada cuadro hará que el personaje abandone suavemente su antigua ruta recta y se dirija hacia el objetivo, describiendo una buscar camino (curva naranja en la figura de abajo):
La suma de esas fuerzas y el cálculo final de velocidad / posición son:
dirección = truncar (dirección, fuerza máxima) dirección = dirección / velocidad de la masa = truncar (velocidad + dirección, velocidad máxima) posición = posición + velocidad
La fuerza de la dirección se trunca para garantizar que no exceda la cantidad de fuerzas permitidas que el personaje puede manejar. Además, la fuerza de dirección se divide por la masa de caracteres, que produce diferentes velocidades de movimiento para diferentes caracteres ponderados. A continuación se muestra una prueba que muestra el comportamiento de búsqueda con todas las fuerzas aplicadas:
Cada vez que el objetivo se mueve, cada personaje velocidad deseada el vector cambia en consecuencia. los velocidad Sin embargo, el vector toma algún tiempo para cambiar y comenzar a apuntar al objetivo nuevamente. El resultado es una transición de movimiento suave.
Los comportamientos de dirección son excelentes para crear patrones de movimiento realistas. La idea principal es utilizar la información local para calcular y aplicar fuerzas para crear los comportamientos. A pesar de que el cálculo es fácil de implementar, aún puede producir resultados muy complejos.
Este tutorial describe los conceptos básicos de los comportamientos de dirección, explicando el comportamiento de búsqueda. En las próximas publicaciones, aprenderemos sobre más comportamientos. Echa un vistazo a la siguiente publicación: Huir y Llegada.