Много лет назад я написал несколько AI для бюджетной псевдо-3d игры. Был один расчет, который я так и не смог выяснить, как лучше всего поступить, и он рассчитывал, где враг остановится, если он остановится сейчас. Например:
- Враг в настоящее время находится на X = 540,0.
- Враг движется вправо со скоростью 10 пикселей на кадр.
- Когда враг хочет остановиться, его скорость падает на 1 пиксель за кадр, пока не достигнет нуля.
Есть ли простая формула, которая позволила бы мне получить позицию, в которой противник оказывается, когда он полностью остановлен? В итоге я рассчитал и жестко закодировал смещение, которое сработало для моих нужд, но должно было рассчитываться отдельно для врагов с разной скоростью.
источник
У меня была точно такая же проблема, когда я работал над своей игрой, и мне понадобилось целое время, чтобы понять математику правильно (блеф). Итак, вот оно:
Переписано в обычную математику:
Где ускорение в вашем случае равно 1, а линейная скорость равна 10:
РЕДАКТИРОВАТЬ
Результат и объяснение Джимми верны. Моя формула требует, чтобы вы также добавили половину скорости.
или
источник
Расчеты об изменении скоростей составляют всю точку исчисления. Я не делал этого некоторое время, поэтому я не помню из головы, но я думаю, что ваша ситуация просто принимает интеграл от -1 (т.е. замедление).
источник
Разве это не движение с постоянным ускорением?
Где:
X: Последняя позиция
Xi: Начальная позиция
V: Скорость
t: Время
a: Ускорение
Единственная сложная часть здесь - как определить «t», так как мы замедляемся с ускорением -1, тогда мы можем вычислить t = V / a, тогда t равно 10.
итак,
Си: 540
В: 10
т: 10
а: -1
Положите все на:
Формула исходит из интеграции ускорения: проверьте здесь
источник