
Сглаживание прицела в Apex Legends: пружина с демпфером вместо мгновенной доводки
Мгновенная доводка прицела — это несколько градусов за один кадр. Живая рука так не двигается ни при каких обстоятельствах, и именно поэтому доводку сглаживают. Разберём, как именно.
Две модели сглаживания
Простая — линейная: на каждом кадре прицел проходит фиксированную долю оставшегося угла. Получается экспоненциальный спад — резкий старт и долгий, вялый хвост у самой цели.
Вторая — пружина с демпфером. Оставшийся угол работает как растянутая пружина: она тянет прицел к цели, а демпфер гасит набранную скорость.
ускорение = угол · жёсткость − скорость · демпфирование
скорость += ускорение · dt
угол -= скорость · dt
На графике видно главное: у пружины скорость ограничена сверху, поэтому большую часть пути прицел идёт ровным темпом, а у самой цели демпфер гасит остаток. Линейная модель ведёт себя ровно наоборот — стартует рывком и потом ползёт.
Жёсткость зависит от того, насколько близко
Постоянная жёсткость даёт либо слишком вялое сопровождение на больших углах, либо дёрганое у самой цели. Поэтому она пересчитывается каждый кадр.
Оставшийся угол делится на настраиваемый радиус захвата и превращается в «близость» от 0 до 1. Дальше близость входит в жёсткость дважды: линейно и через степень с настраиваемым показателем. Итог — мягкий вход в цель, без ступеньки на границе радиуса.
Демпфирование, наоборот, уменьшается с приближением: у цели пружина уже не разгоняется, и гасить нечего, зато остаётся точность.
И поверх всего — потолок скорости. Он и решает, насколько быстро прицел вообще способен пройти большой угол: как бы сильно пружина ни тянула, за кадр прицел не сдвинется больше, чем позволено.
Прицел идёт не по прямой
Даже правильный профиль скорости остаётся узнаваемым, если прицел ползёт строго по прямой. Поэтому к цели добавляется поперечное смещение.
Величина смещения идёт по параболе 4p(1−p): ноль в начале, максимум на середине, ноль в конце. Направление берётся перпендикулярно вектору до цели, а масштаб зависит от того, насколько велик сам угол.
Случайная составляющая не берётся заново каждый кадр. Она сглаживается по правилу r ← 0,7·r + 0,3·шум — новое значение на 70% состоит из предыдущего. Без этого вместо плавной дуги получилась бы дрожь, которая читается ещё лучше прямой линии.
Состояние сбрасывается при смене цели
Деталь, которую легко упустить: пружина хранит накопленную скорость. Если при переключении на новую цель эту скорость не обнулить, прицел пролетит мимо — он придёт к новой цели с разгоном, набранным на старой.
Поэтому состояние сбрасывается при каждой смене цели, при отпускании клавиши и при потере цели. Каждое наведение начинается с нуля.
Что настраивается
Тип сглаживания, жёсткость, демпфирование, радиус захвата, усиление вблизи цели, сила входа, изогнутость пути — всё вынесено в меню отдельными параметрами, потому что удобный профиль у каждого свой и зависит от чувствительности мыши. Список модулей — в описании чита для Apex Legends.
Похожие задачи в других играх устроены иначе: в PUBG основная сложность в баллистике и пристрелке прицела, в Rust — в таблице скоростей снаряда, а в War Thunder — во времени полёта, у которого два решения.
Если продукт не запускается, всё по шагам — в инструкции по запуску.