Estoy desarrollando un juego de Android 2D y estoy haciendo un algoritmo de puntería para que los proyectiles de IA golpeen a los enemigos, ya sea siguiendo un camino o moviéndose libremente. Por el momento, solo calcula dónde estará el objetivo después de una distancia y dispara un proyectil para alcanzarlo a esa distancia. Por supuesto, esto significa variar la velocidad del proyectil para alcanzar el objetivo.
¿Alguien tiene alguna sugerencia para un algoritmo simple-ish (óptimo-ish) para calcular cuándo el proyectil necesita disparar y dónde debe apuntar si solo puede viajar a una velocidad constante? ¿Digamos que el proyectil va dos veces la velocidad del objetivo?
La única forma en que puedo pensar es en buscar y parece bastante grande.
Respuestas:
En un juego de torre de defensa que hice, utilicé una ecuación cuadrática para predecir la intersección y, por lo tanto, apuntar. El siguiente fragmento de código de puntería asume que el enemigo está viajando a una velocidad y dirección constantes. También supone que el proyectil viajará a una velocidad constante conocida (podría ser cualquier velocidad pero debe ser conocida por el algoritmo).
Como también determina el tiempo de impacto, simplemente esperé hasta que pasó el tiempo para llamar a los gráficos de impacto en la posición del objetivo en ese momento ... sin necesidad de ninguna detección de colisión para determinar los golpes.
fuente
a
es 0? Esto producirá una división por cero excepción, pero ¿qué significa esto en términos de la variable t? ¿Debería considerarse "un número muy grande" o cuál sería el mejor caso?La IA, la ubicación del objetivo durante el tiempo en que se dispara el proyectil, y la ubicación final del objetivo en el punto de la muerte forman un triángulo. Esto es lo que ya debe saber:
Tienes tres partes del triángulo, un caso SSA, así que resuélvelo así
El ángulo A debería permitirle determinar el ángulo en el que se debe lanzar el proyectil.
fuente