Ok, entonces consideremos que tenemos un vehículo como el que describí en mi respuesta a esta pregunta , con una posición 2D, velocidad, velocidad angular y fricción / fricción. Se puede acelerar y romper en una cantidad variable, pero no se detiene al instante o alcanza la velocidad máxima al instante. ¿Cómo puedo hacer que se mueva a un punto en particular y se detenga, en el menor tiempo posible, sin rebasar ni oscilar?
Estaba pensando algo como:
- girar hacia la posición de destino.
- acelerar
- mira 1 marca adelante, preguntando "Si aplicara los descansos la próxima marca, ¿superaría el objetivo?"
- Si se sobrepasa, aplique los descansos ahora en cierta cantidad.
Estoy seguro de que este es un problema resuelto y que probablemente haya un método mejor que el que describí.
Usando el cálculo, si conoce su velocidad y la tasa de desaceleración máxima, entonces puede conocer su distancia mínima de frenado. Con eso en mente, puede saber exactamente cuándo necesita aplicar los frenos (dejando de lado los errores de redondeo / cuantización) para detenerse en un determinado punto.
Ahora, espero que alguien mejor en matemáticas que yo publique la fórmula real ...
fuente
finalPositionDelta = -0.5 * sqr(currentSpeed) / maximumDeceleration
Sin embargo, esto supone que su desaceleración es una constante, que dependiendo de la profundidad de su simulación puede no ser el caso. Yo iría con la solución de Ranieri. (Vaya, lo siento, es desaceleración DIV, no mul)Es un problema de control. Debe variar sus entradas proporcionalmente a algún tipo de medida de "error", como la distancia al objetivo. Ver también las respuestas a esta pregunta.
Seguimiento de objetivos: ¿cuándo acelerar y desacelerar una torreta giratoria?
fuente
A veces, en el desarrollo del juego, debes tomar atajos. El atajo aquí se llama Impulso, que, físicamente hablando, es una fuerza muy grande aplicada en muy poco tiempo. En lugar de integrarlo con el tiempo, simplemente lo aplica al parámetro como un cambio directo: establezca la velocidad en 0.
La pregunta es: ¿quieres usar el acceso directo o no?
fuente