Существует множество компьютерных гоночных игр, в которых есть этот уникальный помощник вождения, который помогает тормозить ваш автомобиль, чтобы вы могли безопасно повернуть его. Хотя в некоторых играх это просто «помощь», он просто поможет вашему автомобилю затормозить, но не обеспечит безопасный поворот. В то время как в других, помощь торможения поможет вам сделать безопасный поворот. Мне было интересно, каким может быть алгоритм, который используется для его достижения.
Очень простой алгоритм, который я мог придумать, был
- Заранее определите тормозной путь идеального автомобиля для каждого поворота колеи в зависимости от радиуса поворота, а затем начните соответствующее торможение. Например, при повороте менее 90 o автомобиль автоматически начнет торможение на расстоянии 50 м от начала поворота.
Более продвинутый алгоритм, который обеспечит безопасный поворот, может быть
- Предварительно определите скорость автомобиля в начале каждого поворота, индивидуально для каждой трассы, поворота и автомобиля. Кроме того, заранее определите скорость замедления каждого автомобиля в отдельности, которая зависит от характеристик автомобиля.
- Помощник при торможении будет фиксировать скорость автомобиля в определенный момент времени.
- Начните торможение автомобиля соответствующим образом, чтобы в начале поворота он достиг необходимой скорости.
- Например, пусть скорость конкретного автомобиля в начале поворота на радиусе 43 м составляет 120 км / ч. Пусть скорость замедления автомобиля составляет 200 км / ч 2 . Если в какой-то момент скорость автомобиля составит 200 км / ч, то автомобиль автоматически начнет торможение на расстоянии 400 м от начала поворота.
Ответы:
По сути, система помощи при торможении сравнивает скорость автомобиля игрока со скоростью ближайшей точки на оптимальной гоночной трассе и автоматически применяет тормоза по мере необходимости, чтобы снизить скорость автомобиля игрока до скорости, указанной на оптимальной гоночной трассе. Это похоже на написание AI гоночного автомобиля, но только с использованием выходов тормоза AI, а не на акселератор или рулевое управление.
Это (очевидно) требует, чтобы у вас были данные об оптимальной гоночной трассе, чтобы вы могли сказать, сколько игрок должен замедлить. Эта гоночная линия обычно генерируется вычислительным путем в процессе разработки и поставляется с игрой в виде фрагмента статических данных, а не рассчитывается во время выполнения. (Я работал над играми, которые динамически генерировали гоночную линию перед игроком, но это было вычислительно дорого, и я не рекомендую его, если у вас нет треков, которые изменяются непредсказуемым образом)
источник
Вы могли бы рассчитать путь, который автомобиль описал бы, если бы он поворачивал с текущей скоростью, не дрейфуя. Затем примените тормоза пропорционально дистанции d , которая является расстоянием, измеренным от рассчитанного пути до кривой.
источник