Hace muchos años codifiqué un poco de IA para un juego de pseudo-3d económico. Hubo un cálculo que realmente nunca descubrí la mejor manera de hacer, y fue calcular dónde terminaría el enemigo si se detuviera ahora. Por ejemplo:
- El enemigo está actualmente en X = 540.0.
- El enemigo se mueve a la derecha a 10 píxeles por cuadro.
- Cuando el enemigo quiere detenerse, su velocidad caerá 1 píxel por fotograma hasta que llegue a cero.
¿Existe una fórmula simple que me lleve a la posición donde el enemigo termina cuando está completamente detenido? Terminé precalculando y codificando el offset que funcionaba para mis necesidades, pero tendría que calcularse por separado para enemigos con diferentes velocidades.
fuente
Tuve exactamente el mismo problema al trabajar en mi juego, y me llevó una eternidad hacer las matemáticas correctamente (bleh). Asi que aqui esta:
Reescrito en matemáticas regulares:
Donde la aceleración en su caso es 1, y linearVelocity es 10:
EDITAR
El resultado y la explicación de Jimmy son correctos. Mi fórmula requiere que también agregues la mitad de la velocidad.
o
fuente
Los cálculos sobre el cambio de velocidades es el punto completo del cálculo. No lo he hecho en mucho tiempo, así que no me acuerdo de mi cabeza, pero creo que su situación es simplemente tomar la integral de -1 (es decir, la desaceleración).
fuente
¿No es este movimiento de aceleración constante?
Donde:
X: última posición
Xi: posición inicial
V: velocidad
t: tiempo
a: aceleración
La única parte difícil aquí es cómo determinar "t", ya que disminuimos la velocidad con una aceleración de -1, entonces podemos calcular t = V / a, entonces t es 10.
entonces,
Xi: 540
V: 10
t: 10
a: -1
Pon todo en:
La fórmula proviene de la integración de la aceleración: marque aquí
fuente