Итак, рассмотрим, что у нас есть транспортное средство, подобное тому, которое я описал в своем ответе на этот вопрос , с 2D-положением, скоростью, угловой скоростью и сопротивлением / трением. Он может ускоряться и ломаться на переменную величину, но не может мгновенно остановиться или достичь максимальной скорости. Как я могу заставить его двигаться в определенную точку и остановиться - в кратчайшие возможные сроки - без колебаний или колебаний?
Я думал что-то вроде:
- поверните к целевой позиции.
- ускорять
- посмотрите на 1 галочку вперед и спросите: «Если бы я применил разрывы на следующей галочке, я бы не попал в цель?»
- Если произойдет сбой, примените разрывы сейчас на некоторое количество.
Я уверен, что это решенная проблема, и, вероятно, есть лучший метод, чем тот, который я описал.
Используя исчисление, если вы знаете свою скорость и максимальную скорость замедления, то вы можете узнать минимальное расстояние остановки. Имея это в виду, вы можете точно знать, когда вам нужно применить тормоза (кроме ошибок округления / квантования), чтобы остановиться в определенной точке.
Теперь, надеюсь, кто-то лучше в математике, чем я опубликую фактическую формулу ...
источник
finalPositionDelta = -0.5 * sqr(currentSpeed) / maximumDeceleration
Однако это предполагает, что ваше замедление является постоянной величиной, что может не соответствовать действительности. Я бы пошел с решением Раньери. (Ой, извините, это замедление DIV, а не мул)Это проблема контроля. Вы должны варьировать свои входные данные пропорционально какой-то мере «ошибки», например расстоянию до цели. Смотрите также ответы на этот вопрос.
Отслеживание цели: когда ускорить и замедлить вращающуюся турель?
источник
Иногда, при разработке игр, вам нужно использовать ярлыки. Сокращение здесь называется Импульсом, который, физически говоря, является очень большой силой, приложенной за очень короткое время. Вместо того, чтобы интегрировать его по времени, вы просто применяете его к параметру как прямое изменение: установите скорость в 0.
Вопрос в том, хотите ли вы использовать ярлык или нет?
источник