Character Movement Component в Unreal Engine

Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим класс компонента Character Movement Component в Unreal Engine (UE5, UE4), предоставляющий физически корректный функционал движения для персонажей.

Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.

Character Movement Component

Character Movement Component в Unreal Engine (UE5, UE4)
Character Movement Component в Unreal Engine (UE5, UE4)

Character Movement Component в Unreal Engine — это компонент, ответственный за физически корректное перемещение персонажа (Character). Движение определяется скоростью (Velocity) и ускорением (Acceleration), обновляемыми каждый кадр на основе входных данных. В Blueprint входит в состав обязательных компонентов класса Character, как компонент движения Character Movement (CharMoveComp, Char Move Comp).

Компонент обеспечивает различные режимы физического движения (ходьба, падение, плавание, полет, пользовательские режимы), обработку коллизий, а также сетевое взаимодействие с полной реализацией серверно-клиентской коррекции и предсказания движения. Помимо этого содержит множество параметров, влияющих на детальную настройку данного движения: максимальная скорость ходьбы, скорость прыжка, сила гравитации, максимальная высота шага, трение, замедление при торможении и многие другие.

Также класс интегрирован с системой избежания столкновений (RVO Avoidance) и поддерживает асинхронное обновление движения для повышения производительности.

* Для корректной работы необходимо, чтобы компонент был привязан к объекту класса Character, так как он использует его свойства и взаимодействует с капсулой коллизии этого объекта.

Перевод официальной справки: Character Movement Component — обрабатывает логику перемещения для связанного Character, поддерживая различные режимы движения, включая: ходьбу, падение, плавание, полет.

Ключевые особенности Character Movement Component

Ключевая функциональность Character Movement Component — физически корректное движение персонажа на основе скорости (Velocity) и ускорения (Acceleration).

  • Movement Mode — поддержка различных режимов движения:
    • Walking: движение по поверхности, с учетом трения.
    • Nav Mesh Walking: упрощённый режим ходьбы персонажа по навигационным данным (Nav Mesh).
    • Falling: падение под действием гравитации.
    • Flying: полёт, игнорируя влияние гравитации.
    • Swimming: плавание в жидкости, под действием гравитации и силы плавучести.
    • Custom: пользовательский режим движения, включающий любые дополнительные подрежимы.
  • Crouching — возможность приседания.
  • Step Up, Ledges, Movement Base — обработка взаимодействий со ступеньками, выступами и объектами, являющимися базой движения (движущиеся платформы).
  • Physics Movement — обработка физики движения:
    • Acceleration: ускорение;
    • Braking Friction: трение;
    • Gravity: гравитация;
    • Walking: ходьба;
    • Jumping / Falling: прыжки и падение;
    • Flying: полёт;
    • Swimming: плавание.
  • Physical Interaction — физическое взаимодействие: толкание объектов, приложение сил.
  • Root Motion — поддержка корневого движения для анимаций.
  • Network Prediction — полная сетевая синхронизация с коррекцией и предсказанием (используя интерфейс Network Prediction Interface).
  • Network Smoothing — система сглаживания позиции для сетевых игр.
  • RVO Avoidance — реализация алгоритмов избегания (используя интерфейс RVO Avoidance Interface).
  • Async Character Movement — поддержка асинхронного обновление движения для повышения производительности.

Наследование классов

Родительские классы и интерфейсы

Character Movement Component наследуется от класса Pawn Movement Component (базовый класс для управления движением Pawn), расширяя его базовую логику движением, основанным на физических законах с поддержкой нескольких режимов движения, включая ходьбу, падение, плавание и полёт.

Character Movement Component расширяет родительский класс Pawn Movement Component функциональностью физически корректного движения для персонажей.
Character Movement Component расширяет родительский класс Pawn Movement Component функциональностью физически корректного движения для персонажей.

Помимо этого, Character Movement Component также наследует несколько интерфейсов:

  • IRVOAvoidanceInterface (интерфейс для избегания препятствий через систему RVO).
  • INetworkPredictionInterface (интерфейс для синхронизации движения в сетевых играх).

RVO Avoidance Interface

Интерфейс RVO Avoidance Interface в Unreal Engine обеспечивает взаимодействие объектов с системой RVO (Reciprocal Velocity Obstacles), которая динамически предотвращает столкновения движущихся сущностей (персонажей, транспорта). Он задаёт ключевые параметры для расчётов избегания: уникальный идентификатор объекта (UID), его приоритетный вес (Weight), геометрию коллайдера (радиус, высота, точка происхождения), текущую скорость, а также радиус обнаружения соседних объектов.

Интерфейс также управляет групповым взаимодействием через битовые маски: определяет группу объекта (Avoidance Group Mask), группы, которых нужно избегать (Groups To Avoid Mask), и группы, которые следует игнорировать (Groups To Ignore Mask). Это позволяет тонко настраивать поведение (например, пешеходы могут игнорировать друг друга, но обходить транспорт).

Network Prediction Interface

Интерфейс Network Prediction Interface в Unreal Engine обеспечивает синхронизацию движения объектов в сетевой среде, минимизируя задержки за счёт предсказания. Предназначен для объектов, которые должны выполнять сетевую предсказательную синхронизацию движения.

Он содержит серверные методы для отправки корректировок клиенту и принудительного обновления позиции при долгом отсутствии ответа. Клиентские методы для сглаживания резких изменений позиции/вращения. А также функции управления данными предсказания.

Настройки Character Movement Component во вкладке Details

Во вкладке Details содержатся настройки как самого класса Character Movement Component, так и настройки, унаследованные от родительских классов. Чтобы не повторяться, в этой статье рассмотрим только дополнительные настройки, относящиеся к текущему компоненту движения персонажей.

Остальные повторяющиеся настройки Вы можете изучить по следующим ссылкам:

Character Movement (General Settings)

Character Movement (General Settings)
Character Movement (General Settings)
  • Gravity Scale — задаёт коэффициент гравитации, применяемой к персонажу. То есть фактическое значение силы гравитации умножается на это число. Это позволяет изменять влияние гравитации на движение персонажа без изменения глобальных настроек мира, например, для создания эффектов пониженной или повышенной гравитации, что полезно для различных игровых механик и эффектов.
  • Max Acceleration — определяет максимальное ускорение (то есть максимальную скорость изменения скорости, Rate Of Change Of Velocity), с которым персонаж может разгоняться или менять направление движения. Это значение используется для ограничения того, насколько быстро персонаж может набирать скорость в ответ на ввод игрока или другие воздействия, и напрямую влияет на отзывчивость и динамику управления движением.
  • Braking Friction Factor — множитель, применяемый к трению при торможении. По умолчанию равен 2 (для сохранения обратной совместимости). Значение 1 соответствует истинному уравнению сопротивления. Умножается на текущий коэффициент трения (который может быть Ground Friction или Braking Friction, в зависимости от значения свойства Use Separate Braking Friction). Свойство позволяет гибко настраивать, насколько сильно трение замедляет персонажа при остановке или снижении скорости.
  • Braking Friction — коэффициент трения (сопротивления), который применяется при торможении персонажа, то есть когда ускорение равно нулю или персонаж превышает максимальную скорость. Фактическое значение трения при этом вычисляется как произведение этого коэффициента на Braking Friction Factor. Это свойство позволяет контролировать, насколько сильно замедляется персонаж при скольжении по поверхности во время торможения, создавая противоположную движению силу, зависящую от текущей скорости. Используется только если включена настройка Use Separate Braking Friction. В противном случае применяется текущее значение трения, например, Ground Friction (трение о землю).
  • Crouched Half Height — определяет половину высоты коллизии персонажа в состоянии приседа (Crouch). Это значение используется для корректного изменения размеров капсулы столкновений, когда персонаж переходит в режим приседа, чтобы он мог проходить под низкими препятствиями. Внимание! Доступ к этому свойству напрямую устарел, рекомендуется использовать функции Set Crouched Half Height и Get Crouched Half Height.
  • Use Separate Braking Friction — определяет, будет ли для замедления персонажа (когда ускорение равно нулю) использоваться отдельное значение трения Braking Friction. Параметр действует для всех режимов движения.
    • True: для торможения применяется Braking Friction (умноженное на Braking Friction Factor).
    • False: используется обычное трение (например, трение о землю Ground Friction), также умноженное на Braking Friction Factor.
  • Mass — определяет массу персонажа (Pawn), которая используется при расчёте импульса, передаваемого персонажу при физическом взаимодействии с другими объектами. Это значение влияет на то, как персонаж реагирует на столкновения, толчки и другие физические воздействия в игровом мире, определяя инерцию и сопротивление изменению движения при приложении внешних сил.
  • Default Land Movement Mode — определяет режим движения персонажа по умолчанию, когда он находится не в воде. Этот режим используется при запуске игрока или после телепортации.
    • None: движение отсутствует.
    • Walking: движение по поверхности, с учетом трения.
    • Nav Mesh Walking: упрощённый режим ходьбы персонажа по навигационным данным (Nav Mesh). Если для компонента коллизии персонажа свойство Get Generate Overlap Events установлено в True, то при каждом перемещении по Nav Mesh будут выполняться проверки пересечений (Sweep), что позволяет корректно обрабатывать столкновения с другими объектами. Если же Get Generate Overlap Events равно False, перемещение становится менее затратным по ресурсам, но персонаж будет перекрывать другие объекты без каких-либо дополнительных действий для их отталкивания или разрешения коллизий.
    • Falling: падение под действием гравитации, например, после прыжка или схода с края поверхности.
    • Flying: полёт, игнорируя влияние гравитации.
    • Swimming: плавание в жидкости, под действием гравитации и силы плавучести.
    • Custom: пользовательский режим движения, включающий любые дополнительные подрежимы.
  • Default Water Movement Mode — определяет режим движения персонажа по умолчанию, когда он находится в воде. Этот режим используется при запуске игрока или после телепортации.
  • Based Movement Ignore Physics Base — определяет, будет ли функция Update Based Movement игнорировать столкновения с объектами, являющимися текущей основой движения (Movement Base), если эта основа симулируется с помощью физики. Если свойство установлено в значение True, то при обновлении движения на физически симулируемой базе (например, движущейся платформе) коллизии с этой базой игнорируются, что предотвращает нежелательные столкновения между персонажем и самой платформой. Это позволяет корректно обрабатывать перемещение персонажа на объектах с физической симуляцией.
  • Braking Sub Step Time — определяет величину временного подшага (Sub Step) на который разбивается процесс торможения при расчете трения (Braking Friction). Меньшие значения этого параметра увеличивают точность расчёта торможения, особенно при больших значениях времени кадра (FPS), однако могут немного снизить производительность. Это свойство позволяет балансировать между точностью физического торможения и затратами на вычисления.
  • Enable Scoped Movement Updates — определяет, будут ли высокоуровневые обновления движения обёрнуты в область движения (Movement Scope), которая накапливает изменения и откладывает выполнение основной части работы до конца обновления. Если включено, события касания (Touch) и столкновения (Hit) не будут вызываться до завершения всех перемещений внутри одного обновления, что может повысить производительность. Иначе говоря, система группирует несколько операций движения в единую транзакцию, откладывая ресурсоёмкие вычисления до завершения всех перемещений.
  • Enable Server Dual Move Scoped Movement Updates — включает использование дополнительной области (Scoped Movement Update) для объединения нескольких перемещений на сервере, когда клиент отправляет два движения в одном сетевом пакете. Это позволяет снизить нагрузку на сервер за счёт группировки перемещений, однако область охвата становится больше, чем при обычном использовании Enable Scoped Movement Updates, что может привести к изменению порядка обработки событий перекрытия (Overlap Events), перемещению присоединённых компонентов и другим тонким изменениям поведения. Иначе говоря, свойство используется для оптимизации обработки на сервере, когда за один пакет приходит два перемещения от клиента. Оно расширяет область действия Scoped Update, чтобы покрыть оба перемещения, что может уменьшить накладные расходы, но с риском изменения поведения в некоторых аспектах.
  • Run Physics With No Controller — определяет, будет ли выполняться движение и физика персонажа даже при отсутствии контроллера у владельца (Character Owner). Обычно без контроллера движение останавливается, а скорость и ускорение сбрасываются в ноль, если персонаж находится в режиме ходьбы. Если это свойство установлено в значение True, персонажи, созданные без контроллера, инициализируют режим движения в соответствии со значениями Default Land Movement Mode или Default Water Movement Mode и продолжают симулировать движение и физику.
  • Max Simulation Time Step — определяет максимальное значение временного шага (Time Delta) для каждого отдельного шага симуляции движения. Используется для разбиения одного кадра на несколько подшагов в сложных режимах движения с гравитацией (падение, ходьба), обеспечивая стабильность расчётов при высоких скоростях или сложных коллизиях. Уменьшение этого значения позволяет повысить точность симуляции, особенно при работе с быстро движущимися объектами или сложными случаями столкновений, но может снизить производительность.
  • Max Simulation Iterations — определяет максимальное количество итераций, используемых для каждого отдельного шага симуляции движения. Это свойство применяется в основном в продвинутых режимах движения, которые разбивают большие временные интервалы на несколько меньших шагов (особенно в режимах с гравитацией, таких как падение и ходьба). Увеличение этого значения позволяет повысить точность симуляции при работе с быстро движущимися объектами или сложными случаями столкновений, но может снизить производительность.
  • Max Jump Apex Attempts Per Simulation — определяет максимальное количество попыток за одну симуляцию, которые предпринимаются для точного достижения вершины прыжка (Apex) при движении персонажа в состоянии падения. Ограничение этого значения предотвращает глубокую рекурсию в случаях, когда из-за коллизий или других условий вершина прыжка многократно достигается повторно в рамках одной симуляции. Это помогает избежать избыточных вычислений и возможных проблем с производительностью. Например, во время прыжка персонаж достигает вершины (Apex), где вертикальная скорость становится нулевой. В этот момент система будет пытаться точно обработать переход от подъема к падению. Однако из-за коллизий
    или других условий может потребоваться несколько попыток для коррекции положения. Это свойство поможет ограничить количество таких попыток, чтобы избежать бесконечной рекурсии и зависаний.
  • Max Depenetration With Geometry — определяет максимальное расстояние, на которое разрешена депенетрация (выход из пересечений) для клиентских объектов при столкновении с не-персонажами (статичной геометрией). Иначе говоря, свойство задаёт, как далеко персонаж может быть вытолкнут из геометрии при обнаружении пересечений во время движения. Это помогает избежать резких скачков или некорректных положений персонажа при сетевой репликации и синхронизации.
  • Max Depenetration With Geometry As Proxy — определяет максимальное расстояние, на которое симулируемый прокси-персонаж (Simulated Proxy) может быть выдавлен (Depenetrate) из коллизии с объектами, которые не являются Pawn (то есть с геометрией уровня, стенами, платформами), когда прокси синхронизируется по сети.
  • Max Depenetration With Pawn — определяет максимальное расстояние, на которое персонаж может быть выдавлен (Depenetrate) из коллизии с другими Pawn (другими персонажами) за одну симуляцию движения.
  • Max Depenetration With Pawn As Proxy — определяет максимальное расстояние, на которое симулируемый прокси-персонаж (Simulated Proxy) может быть выдавлен (Depenetrate) из коллизии с другими Pawn (другими персонажами) за одну симуляцию движения, когда прокси синхронизируется по сети.
  • Requested Move Use Acceleration — определяет, будет ли при следовании по пути (Path Following) использоваться ускорение (Acceleration) для достижения целевой скорости.
    • True: персонаж будет разгоняться до нужной скорости постепенно, используя ускорение. Это делает движение более плавным и реалистичным — персонаж не мгновенно достигает максимальной скорости, а ускоряется до неё.
    • False: скорость движения персонажа по пути устанавливается напрямую, без учёта ускорения.

Proxy, Simulated Proxy (прокси) — это специальная копия игрового объекта (например, персонажа), которая существует на клиенте или сервере, но не управляется напрямую локальным игроком или логикой сервера. Вместо этого она симулирует или отображает состояние, полученное по сети от «истинного владельца».

Character Movement: Walking

Character Movement: Walking
Character Movement: Walking
  • Max Step Height — задаёт максимальную высоту ступеньки, на которую персонаж может подняться при ходьбе. Это значение указывается в сантиметрах и ограничивает, насколько высокое препятствие (например, бордюр, низкий порог или камень) персонаж сможет автоматически преодолеть, «перешагнув» его без необходимости прыгать.
  • Walkable Floor Angle  — определяет максимальный угол наклона поверхности в градусах, по которой персонаж может ходить. Если угол наклона поверхности превышает это значение, то поверхность считается слишком крутой и персонаж не сможет по ней передвигаться в режиме ходьбы (Walking).
  • Walkable Floor Z  — определяет минимальное значение Z-компоненты нормали поверхности, при котором поверхность считается проходимой (Walkable) для персонажа. Если нормаль поверхности имеет Z-компоненту меньше этого значения, поверхность считается слишком крутой, и персонаж не сможет по ней ходить.
  • Ground Friction — отвечает за коэффициент трения между персонажем и поверхностью при ходьбе. Высокое значение Ground Friction позволяет персонажу быстрее менять направление движения и быстрее останавливаться при торможении (Braking). Низкое значение приводит к тому, что персонаж будет дольше скользить, медленнее останавливаться и менее резко менять направление — эффект «льда» или «масла». Если свойство Use Separate Braking Friction выключено (False), то при торможении (когда Acceleration = 0) для расчёта силы торможения используется именно Ground Friction, умноженный на Braking Friction Factor. Если Use Separate Braking Friction включено (True), то для торможения используется отдельный параметр Braking Friction.
  • Max Walk Speed — определяет максимальную скорость передвижения персонажа по земле (Walking), а также максимальную боковую (латеральную) скорость при падении (Falling). Значение указывается в сантиметрах в секунду (cm/s). При падении (например, после прыжка) этот параметр ограничивает максимальную горизонтальную (латеральную) скорость персонажа. Вертикальная скорость при падении ограничивается другими параметрами (например, гравитацией и Jump Z Velocity).
  • Max Walk Speed Crouched — определяет максимальную скорость передвижения персонажа по земле в режиме приседа (Crouched). Значение указывается в сантиметрах в секунду (cm/s).
  • Min Analog Walk Speed — определяет минимальную скорость движения по земле (Walking), с которой персонаж будет ускоряться при минимальном наклоне аналогового стика (например, на геймпаде). Это значение определяет, насколько «чувствительным» будет управление персонажем при слабом наклоне стика — насколько медленно он может идти, если игрок хочет двигаться очень осторожно.
  • Braking Deceleration Walking — определяет замедление персонажа при ходьбе, когда к нему не применяется ускорение (Acceleration = 0). Это постоянная сила, которая противоположна текущей скорости и уменьшает её на фиксированное значение каждую секунду.
  • Sweep While Nav Walking — определяет, будет ли персонаж производить Sweep-проверку коллизий при движении в режиме Nav Walking (Navigation Walking).
    • True: при движении в режиме Nav Walking, будет выполняться Sweep-проверка коллизий. Это значит, что персонаж не сможет проходить сквозь стены и другие препятствия — столкновения будут корректно обрабатываться.
    • False: персонаж будет перемещаться по навигационному пути без проверки столкновений.
  • Can Walk Off Ledges — определяет, может ли персонаж сходить/шагать с края платформы или уступа во время ходьбы (Walking).
  • Can Walk Off Ledges When Crouching — определяет, может ли персонаж сходить с края платформы (уступа) во время передвижения в режиме приседа (Crouch).
  • Maintain Horizontal Ground Velocity — определяет, каким образом сохраняется скорость персонажа при движении вверх по наклонным поверхностям (рампам).
    • True: при движении по наклонной поверхности (рампе) будет сохраняться именно горизонтальная составляющая скорости (по X и Y относительно мира). Это приводит к тому, что персонаж поднимается по рампе быстрее вдоль самой поверхности, чем по плоской земле.
    • False: сохраняется величина скорости вдоль поверхности рампы (то есть параллельно самой рампе). Движение по рампе ощущается более естественно и предсказуемо: скорость по поверхности не меняется, независимо от наклона.
  • Ignore Base Rotation — определяет, будет ли персонаж учитывать вращение объекта, на котором он стоит (например, платформы, лифта, движущейся лодки).
    • True: персонаж игнорирует вращение своей основы (Base). Его мировая ориентация (World Rotation) не изменяется, даже если платформа под ним поворачивается.
    • False: персонаж вращается вместе с платформой. Его мировая ориентация будет изменяться синхронно с вращением платформы.
  • Perch Radius Threshold — возвращает значение, определяющее расстояние от края капсулы персонажа, внутри которого персонажу не разрешается устойчиво стоять (Perch) на краю поверхности. Perch — термин для описания ситуации, когда персонаж может стоять на очень маленькой поверхности или на самом краю платформы. Параметр предотвращает ситуации, когда персонаж может стоять на едва заметном выступе или на самом краю платформы, что может выглядеть неестественно или вызывать баги.
  • Perch Additional Height — определяет дополнительную высоту (в сантиметрах), которая добавляется к значению Max Step Height при расчёте того, насколько высоко над поверхностью персонаж может устойчиво стоять на краю (Perch). Perch — термин для описания ситуации, когда персонаж может стоять на очень маленькой поверхности или на самом краю платформы. Это позволяет персонажу устойчиво стоять на краю платформы, даже если его капсула немного выше поверхности, чем обычный Max Step Height.
  • Ledge Check Threshold — определяет максимальную высоту уступа (в сантиметрах), при которой персонаж может сойти с края уступа. Если высота уступа меньше или равна значению параметра, персонаж сможет сойти с него не переходя в режим падения. Если уступ выше значения параметра, персонаж не сможет просто так сойти с него — это будет считаться падением с большой высоты.
  • Always Check Floor — управляет тем, будет ли персонаж всегда выполнять проверку наличия пола под собой, даже когда он стоит на месте.
    • False (по умолчанию): если персонаж не двигается (стоит на месте), система старается избегать лишних проверок пола (Floor Checks) ради оптимизации. Это экономит производительность, потому что проверка пола — довольно частая и затратная операция.
    • True: проверка пола будет выполняться каждый тик, даже если персонаж не двигается. Это гарантирует, что любые изменения под персонажем (например, движущиеся платформы, поднимающиеся объекты, исчезающие блоки) будут сразу обнаружены, и персонаж корректно отреагирует на них (например, начнёт падать или переместится вместе с платформой).
  • Use Flat Base For Floor Checks — определяет, будет ли система проверять пол под персонажем так, как будто у капсулы персонажа плоское основание, а не округлое, как у стандартной Capsule Collision.
    • False (по умолчанию): проверка пола учитывает округлую форму нижней части капсулы персонажа. В этом случае, когда персонаж подходит к краю платформы, его капсула может балансировать на самом краю, и персонаж будет медленно сползать вниз, пока не потеряет устойчивость и не упадёт.
    • True: проверка пола происходит так, как будто у персонажа плоское основание. Это означает, что если даже небольшая часть капсулы уже не опирается на поверхность, персонаж сразу теряет устойчивость и начинает падать, не балансируя на краю.

Character Movement: Jumping / Falling

Character Movement: Jumping / Falling
Character Movement: Jumping / Falling
  • Jump Z Velocity — определяет начальную вертикальную скорость (в см/с), с которой персонаж начинает прыжок (мгновенное вертикальное ускорение).
  • Braking Deceleration Falling — задаёт латеральное (горизонтальное, боковое) замедление персонажа во время падения, когда к нему не применяется ускорение (Acceleration = 0). При падении персонаж может иметь горизонтальную скорость (например, если он двигался вбок перед прыжком). Если игрок не даёт команду на ускорение в воздухе, это свойство определяет, как быстро персонаж замедляется по горизонтали.
  • Air Control — определяет, насколько сильно игрок может управлять латеральным (горизонтальным, боковым) движением персонажа в воздухе во время падения или прыжка.
    • 0.0: персонаж не может менять направление или скорость в воздухе (полный реализм).
    • 1.0: персонаж может управлять движением в воздухе так же, как и на земле (максимальный контроль).
    • Любое значение между 0 и 1: частичный контроль.
  • Air Control Boost Multiplier — определяет множитель управления в воздухе (Air Control), который применяется, когда горизонтальная скорость персонажа в воздухе меньше определённого порога (Air Control Boost Velocity Threshold). Air Control задаёт, насколько сильно игрок может управлять движением персонажа в воздухе. Air Control Boost Multiplier увеличивает этот контроль, если текущая горизонтальная скорость (Lateral Velocity) персонажа меньше порога Air Control Boost Velocity Threshold. Это позволяет персонажу быстрее разогнаться с места в воздухе или эффективнее менять направление, если он двигается медленно или только начал движение в воздухе. Итоговое значение Air Control с учётом буста не может превышать 1 (100% контроля).
  • Air Control Boost Velocity Threshold — определяет порог горизонтальной скорости (в см/с), ниже которого применяется усиленный контроль в воздухе (Air Control Boost). Смотрим свойство Air Control Boost Multiplier выше.
  • Falling Lateral Friction — определяет коэффициент трения (Friction), который применяется к горизонтальному (латеральному, боковому) движению персонажа в воздухе, когда он находится в режиме падения (Falling). Это значение определяет, насколько быстро персонаж теряет горизонтальную скорость в воздухе из-за трения. Применяется только к латеральному (по X и Y) движению, не влияет на вертикальное падение. Если свойство Use Separate Braking Friction установлено в False, это значение также влияет на способность персонажа быстро остановиться в воздухе при отсутствии ускорения (Acceleration = 0). Если Use Separate Braking Friction = True, для торможения используется отдельное значение Braking Friction.
  • Impart Base Velocity X — определяет, будет ли персонаж получать (наследовать) горизонтальную скорость по оси X от объекта, на котором он стоял, когда начинает падать или прыгать с него.
  • Impart Base Velocity Y — определяет, будет ли персонаж получать (наследовать) горизонтальную скорость по оси Y от объекта, на котором он стоял, когда начинает падать или прыгать с него.
  • Impart Base Velocity Z — определяет, будет ли персонаж наследовать вертикальную скорость (по оси Z) от объекта, на котором он стоял, когда начинает падать или прыгать с него.
  • Impart Base Angular Velocity — определяет, будет ли персонаж наследовать тангенциальные (касательные) компоненты угловой скорости (вращения) основы (Base Actor), когда он прыгает или падает с неё.
    • True: персонаж получит дополнительную скорость, соответствующую вращению платформы в той плоскости, в которой разрешено. Это создаёт эффект инерции: если платформа вращалась, персонаж унаследует часть этого вращения как линейную скорость и будет двигаться в сторону, соответствующую вращению платформы. Однако, будут реально добавлены к скорости персонажа только те компоненты скорости, которые разрешены флагами Impart Base Velocity X, Impart Base Velocity Y, Impart Base Velocity Z.
    • False: персонаж не получает дополнительную скорость от вращения платформы, только от её линейного движения (если разрешено соответствующими флагами).
  • Notify Apex — определяет, будет ли вызываться событие Notify Jump Apex у контроллера персонажа в момент достижения верхней точки прыжка (Apex).
    • True: когда персонаж достигает апекса прыжка (точки максимальной высоты), система вызывает событие Notify Jump Apex у контроллера персонажа. После этого свойство автоматически сбрасывается в False, чтобы событие не вызывалось повторно в этом прыжке.
    • False: событие не вызывается, даже если персонаж достигает апекса прыжка.
  • Stay Based In Air — определяет, будет ли персонаж оставаться привязанным к объекту, на котором он стоял, даже после того, как начал прыгать или находиться в воздухе. Это значит, что если объект продолжит двигаться или вращаться, персонаж будет следовать за ним, пока не приземлится на другую поверхность или не будет явно отцеплен.
  • Stay Based In Air Height — используется вместе с флагом Stay Based In Air и определяет, насколько высоко над объектом-основой персонаж может находиться в воздухе, оставаясь привязанным к этому объекту.
  • Jump Off Jump Z Factor — определяет, какая доля от стандартной вертикальной скорости прыжка (Jump Z Velocity) будет использоваться, если персонажу автоматически нужно спрыгнуть с объекта, который не разрешено использовать в качестве основы (например, с другого персонажа). В таких случаях персонаж получает небольшой вертикальный импульс, чтобы корректно оттолкнуться от объекта.
  • Apply Gravity While Jumping — определяет, будет ли к персонажу применяться гравитация во время активной фазы прыжка (то есть, пока игрок держит клавишу прыжка).
    • True: гравитация действует на персонажа сразу после начала прыжка, даже если игрок продолжает удерживать кнопку прыжка. Это делает высоту прыжка более стабильной и независимой от частоты кадров (FPS). При этом высота прыжка может стать чуть ниже, чем при стандартном поведении, потому что гравитация сразу начинает замедлять персонажа.
    • False (по умолчанию): пока игрок держит кнопку прыжка, гравитация может быть временно ослаблена или отключена (зависит от реализации UE), что позволяет прыгнуть чуть выше. Высота прыжка может зависеть от длительности удержания кнопки и частоты кадров, что иногда приводит к непредсказуемым результатам на разных ПК.

Character Movement: Gravity

Character Movement: Gravity
Character Movement: Gravity
  • Gravity Direction — нормализованный вектор, задающий направление гравитации для персонажа в режимах движения, зависящих от гравитации: Walking, Falling и Custom. Позволяет реализовать «нестандартную» гравитацию, например, ходьбу по стенам, потолку или в любых других направлениях, отличных от стандартного «вниз по оси Z». Иначе говоря, это вектор, определяющий, куда «тянет» гравитация персонажа, позволяющий реализовать движение по любым поверхностям и в любом направлении. Все значения скорости (Velocity) и ускорения (Acceleration) остаются в мировых координатах, но для внутренних расчётов преобразуются относительно направления гравитации.

Character Movement: Networking

Character Movement: Networking
Character Movement: Networking
  • Network Smoothing Mode — определяет, каким образом сглаживается (интерполируется) движение персонажа на клиентах в сетевой игре, чтобы уменьшить визуальные рывки из-за задержек или потерь пакетов.
    • Disabled: нет сглаживания. Персонаж мгновенно перемещается в новую позицию при каждом сетевом обновлении. Может приводить к рывкам (Jitter), особенно при нестабильном соединении.
    • Linear: линейная интерполяция. Персонаж плавно двигается от текущей позиции к целевой за определённое время. Хорошо подходит для большинства игр, сглаживает небольшие сетевые задержки.
    • Exponential: экспоненциальная интерполяция. Персонаж быстро приближается к целевой позиции, особенно если отставание большое. Быстрее догоняет правильную позицию, но при этом сглаживает мелкие отклонения.
  • Network Skip Proxy Prediction on Net Update — управляет тем, будет ли клиент-прокси (Simulated Proxy) выполнять предсказание движения в тот кадр, когда он получает новое сетевое обновление позиции.
    • True: когда клиент-прокси получает новое сетевое обновление позиции от сервера, он пропускает фазу предсказания (Prediction) на этом кадре. Это экономит вычислительные ресурсы, потому что нет смысла предсказывать движение, если только что пришли свежие данные с сервера. Однако, из-за этого появляется дополнительная задержка в один кадр между получением обновления и началом следующего предсказания. Это может сделать движение чуть менее отзывчивым на клиентах с высоким пингом.
    • False: предсказание движения выполняется каждый кадр, даже если в этот кадр пришло сетевое обновление. Это может быть чуть дороже по производительности, но уменьшает задержку между сетевыми обновлениями и визуализацией движения.
  • Network Max Smooth Update Distance — определяет максимальное расстояние (в сантиметрах), на которое персонаж может отставать от серверной позиции при интерполяции между сетевыми обновлениями. В сетевой игре клиенты получают обновления позиции персонажа с сервера не каждый кадр, а с определённой частотой. Между этими обновлениями клиент плавно интерполирует (сглаживает) движение персонажа, чтобы не было рывков. Если из-за задержек или потерь пакетов клиент слишком сильно отстаёт от серверной позиции, персонаж может начать телепортироваться или резко догонять свою реальную позицию. Текущий параметр ограничивает это отставание: если расстояние между текущей клиентской позицией и полученной с сервера превышает этот порог, интерполяция прерывается, и персонаж мгновенно перемещается в правильную позицию.
  • Network No Smooth Update Distance — определяет максимальное расстояние (в сантиметрах), при превышении которого персонаж мгновенно телепортируется в новую позицию, полученную с сервера, без какой-либо интерполяции или сглаживания. Если расстояние между текущей позицией персонажа и полученной с сервера превышает значение параметра, клиент немедленно перемещает (телепортирует) персонажа в правильную позицию без плавного перехода. Это позволяет быстро устранить сильные рассинхронизации и предотвратить появление фантомных или зависших персонажей.
  • Network Min Time Between Client Ack Good Moves — определяет минимальное время (в секундах) между подтверждениями сервером корректных движений клиента. В сетевой игре клиент отправляет серверу информацию о своих перемещениях (Moves). Сервер проверяет эти перемещения и, если они валидны (Good Moves), отправляет клиенту подтверждение (Acknowledgement). Если подтверждения отправляются слишком часто, это увеличивает сетевой трафик. Текущий параметр позволяет ограничить частоту таких подтверждений, экономя пропускную способность.
  • Network Min Time Between Client Adjustments — определяет минимальный интервал времени (в секундах) между отправкой сервером корректирующих сообщений клиенту, если клиент превысил допустимую ошибку позиции (Position Error). В сетевой игре сервер следит за тем, насколько сильно позиция клиента отличается от серверной. Если расхождение превышает допустимый порог, сервер отправляет клиенту корректирующее сообщение (Client Adjustment), чтобы синхронизировать позицию. Текущий параметр ограничивает частоту этих корректирующих сообщений, чтобы не перегружать сеть.
  • Network Min Time Between Client Adjustments Large Correction — определяет минимальный интервал времени (в секундах) между отправкой сервером корректирующих сообщений клиенту, если ошибка позиции клиента превышает большой порог (Network Large Client Correction Distance). В сетевой игре сервер следит за расхождением позиции клиента и сервера. Если ошибка превышает обычный порог, применяется обычный интервал отправки корректировок (Network Min Time Between Client Adjustments). Если ошибка превышает большой порог (Network Large Client Correction Distance), используется значение текущего параметра — то есть сервер может чаще отправлять корректировки при серьёзных рассинхронизациях.
  • Network Large Client Correction Distance — определяет пороговую дистанцию (в сантиметрах), при превышении которой ошибка позиции клиента считается большой, и сервер начинает чаще отправлять корректирующие сообщения. Сервер постоянно сравнивает позицию персонажа на клиенте с истинной серверной позицией. Если расхождение (ошибка) превышает значение текущего параметра, сервер считает ошибку большой и активирует специальный режим быстрой коррекции.
  • Network Always Replicate Transform Update Timestamp — управляет тем, будет ли сервер всегда реплицировать (отправлять клиентам) значение Replicated Server Last Transform Update Time Stamp. То есть временную метку последнего обновления трансформации (позиции/вращения) персонажа на сервере, которая используется для сетевого сглаживания движения (Network Smoothing) на клиентах. По умолчанию, для экономии трафика, метка времени отправляется только когда это действительно нужно: при Linear-сглаживании. Если реализуются пользовательские сетевые механики, можно включить текущее свойство, чтобы всегда иметь актуальную информацию на клиентах.
  • Network Simulated Smooth Location Time — определяет, сколько времени (в секундах) клиент будет плавно интерполировать позицию персонажа от старого положения к новому, полученному с сервера, при сетевой коррекции. Используется для сглаживания (Interpolation/Smoothing) резких изменений позиции персонажа на клиентах, когда сервер сообщает, что клиентская позиция была ошибочной. Свойство не используется в режиме Linear Smoothing (линейное сглаживание).
  • Network Simulated Smooth Rotation Time — определяет, за сколько времени (в секундах) клиент плавно интерполирует (сглаживает) поворот персонажа от старого значения к новому, полученному с сервера, при сетевой коррекции. Свойство не используется при Linear Smoothing (линейном сглаживании).
  • Listen Server Network Simulated Smooth Location Time — задаёт, за какое время (в секундах) на Listen-сервере будет происходить плавная интерполяция (сглаживание) позиции персонажа от старого положения к новому, полученному с сервера, при сетевой коррекции. Listen-сервер — это сервер, который одновременно является и клиентом (например, когда хостит обычный игрок). Свойство аналогично Network Simulated Smooth Location Time, но применяется только на Listen-серверах.
  • Listen Server Network Simulated Smooth Rotation Time — определяет, за сколько времени (в секундах) на Listen-сервере будет происходить плавная интерполяция (сглаживание) поворота персонажа от старого значения к новому, полученному с сервера, при сетевой коррекции. Listen-сервер — это сервер, который одновременно является и клиентом (например, когда хостит обычный игрок). Свойство аналогично Network Simulated Smooth Rotation Time, но применяется только на Listen-серверах.
  • Net Proxy Shrink Radius — определяет, на сколько сантиметров уменьшается радиус капсулы (Capsule Component) для симулируемых прокси-персонажей (Simulated Proxies) на клиентах, чтобы компенсировать возможные ошибки округления при сетевой репликации и избежать проблем с проникновением (Encroachment) в другие объекты. Важно: изменение этого свойства во время игры не поддерживается (оно должно быть задано при старте).
  • Net Proxy Shrink Half Height — определяет, на сколько сантиметров уменьшается половина высоты капсулы (Capsule Half Height) для симулируемых прокси-персонажей (Simulated Proxies) на клиентах, чтобы компенсировать возможные ошибки округления при сетевой репликации и избежать проблем с проникновением (Encroachment) в другие объекты. Важно: изменение этого свойства во время игры не поддерживается (оно должно быть задано при старте).

Character Movement: Swimming

Character Movement: Swimming
Character Movement: Swimming
  • Max Swim Speed — максимальная скорость (в сантиметрах в секунду), с которой персонаж может передвигаться в режиме плавания (Swimming).
  • Braking Deceleration Swimming — определяет, с какой скоростью персонаж замедляется (тормозит), когда перестаёт ускоряться в режиме плавания (Swimming).
  • Buoyancy — коэффициент плавучести персонажа в воде, используемый в режиме плавания (Swimming).
    • 1.0 = нейтральная плавучесть: персонаж не тонет и не всплывает, его вес уравновешен водной средой.
    • 0.0 = нет плавучести: персонаж полностью тонет, вода никак не поддерживает его.
  • Max Out Of Water Step Height — максимальная высота (в сантиметрах), на которую персонаж может шагнуть (Step Up), чтобы выбраться из воды на сушу в режиме плавания (Swimming).
  • Outof Water Z — вертикальная скорость (по оси Z, в сантиметрах в секунду), которая применяется к персонажу, когда он пытается выбраться из воды (например, выпрыгнуть на берег или платформу) в режиме плавания (Swimming).
  • Jump Out Of Water Pitch — определяет пороговый угол тангажа (Pitch) контроллера (например, камеры или направления движения), при котором персонаж автоматически совершит прыжок при выходе из воды. Используется для автоматизации прыжка, когда игрок смотрит вверх (например, чтобы выпрыгнуть из воды на платформу).

Character Movement: Flying

Character Movement: Flying
Character Movement: Flying
  • Max Fly Speed — максимальная скорость (в сантиметрах в секунду), с которой персонаж может передвигаться в режиме полёта (Flying).
  • Braking Deceleration Flying — определяет, с какой скоростью персонаж замедляется (тормозит), когда перестаёт ускоряться (Acceleration = 0) в режиме полёта (Flying).

Character Movement: Custom Movement

Character Movement: Custom Movement
Character Movement: Custom Movement
  • Max Custom Movement Speed — максимальная скорость (в сантиметрах в секунду), с которой персонаж может передвигаться в режиме Custom (пользовательский режим движения).

Character Movement (Rotation Settings)

Character Movement (Rotation Settings)
Character Movement (Rotation Settings)
  • Rotation Rate — скорость изменения поворота персонажа (в градусах в секунду по каждой оси: Pitch, Yaw, Roll), которая применяется, когда активированы свойства Use Controller Desired Rotation или Orient Rotation To Movement. Если значение отрицательное, поворот будет мгновенным — персонаж моментально принимает нужный угол.
  • Use Controller Desired Rotation — определяет, будет ли персонаж плавно поворачиваться к желаемому повороту контроллера (Control Rotation) с использованием скорости, заданной в свойстве Rotation Rate. Текущее свойство игнорируется, если параметр Orient Rotation To Movement = True, и персонаж будет поворачиваться в направлении движения, а не взгляда. Важно: рекомендуется отключить другие настройки, такие как Use Controller Rotation Yaw на самом персонаже, чтобы избежать конфликтов в логике поворота.
  • Orient Rotation To Movement — определяет, будет ли персонаж автоматически поворачиваться в направлении движения (точнее, в направлении ускорения) с использованием скорости, заданной в свойстве Rotation Rate. Параметр переопределяет (отменяет) свойство Use Controller Desired Rotation. Важно: рекомендуется отключить другие настройки, такие как Use Controller Rotation Yaw на самом персонаже, чтобы избежать конфликтов в логике поворота.

Character Movement: Physics Interaction

Character Movement: Physics Interaction
Character Movement: Physics Interaction
  • Enable Physics Interaction — определяет, будет ли персонаж (Character) взаимодействовать с физическими объектами (Physics Objects) при столкновении с ними во время ходьбы. Если свойство включено, персонаж будет толкать физические объекты, передавать им импульс и взаимодействовать с ними как физическое тело.
  • Touch Force Scaled To Mass — определяет, будет ли сила взаимодействия персонажа с физическими объектами (Touch Force Factor) масштабироваться в зависимости от массы объекта.
  • Push Force Scaled To Mass — определяет, будет ли сила толчка (Push Force Factor) масштабироваться в зависимости от массы физического объекта при взаимодействии с ним.
  • Push Force Using ZOffset — определяет, будет ли точка приложения силы толчка (Push Force) смещаться вверх по оси Z с помощью коэффициента Push Force Point ZOffset Factor при взаимодействии персонажа с физическим объектом. Если свойство выключено, сила применяется непосредственно в точке столкновения (Impact Point). Это может создавать более естественное поведение, например, при попытке сдвинуть высокий объект персонаж будет как бы подталкивать его ближе к центру массы, а не прикладывать силу только у самой земли.
  • Scale Push Force To Velocity — определяет, будет ли прикладываемая сила толчка (Push Force) к физическому объекту ограничиваться так, чтобы объект не разгонялся быстрее, чем сам персонаж. То есть сила будет уменьшаться, если объект уже движется с той же скоростью, что и персонаж, и никогда не превысит значение, заданное в Push Force Factor.
  • Standing Downward Force Scale — коэффициент, который масштабирует силу, с которой персонаж давит вниз на физический объект, на котором стоит. Эта сила рассчитывается исходя из массы персонажа и гравитации, а затем умножается на этот коэффициент. Позволяет настраивать, насколько сильно персонаж давит на физические объекты, на которых он стоит (имитируется вес персонажа).
  • Initial Push Force Factor — множитель, определяющий силу начального импульса (Force Impulse), который прикладывается к физическому объекту, когда персонаж впервые сталкивается с ним и происходит отскок (Bounce) от блокирующего объекта с включённой физикой.
  • Push Force Factor — множитель, определяющий силу, с которой персонаж толкает физический объект при столкновении с ним (если объект блокирует движение и у него включена физика).
  • Push Force Point ZOffset Factor — параметр, определяющий смещение точки приложения силы толчка по вертикали (оси Z) на физическом объекте при взаимодействии персонажа с ним. Когда персонаж толкает физический объект, точка приложения силы может быть смещена вверх или вниз по высоте объекта. Значение параметра определяет, где именно по вертикали будет приложена сила.
    • 0.0: сила прикладывается к центру массы объекта.
    • 1.0: к самой верхней точке объекта.
    • -1.0: к самой нижней точке объекта.
  • Touch Force Factor — множитель, определяющий силу, которая применяется к физическим объектам, когда персонаж просто касается их (не обязательно сталкивается с блокирующим препятствием, а именно прикасается — например, скользит вдоль поверхности или слегка задевает объект).
  • Min Touch Force — минимальное значение силы, которое будет приложено к физическому объекту, когда персонаж его касается (при использовании Touch Force Factor). Если рассчитанная сила меньше этого значения, будет использовано значение текущего параметра. Если значение отрицательное, минимальное ограничение не применяется.
  • Max Touch Force — максимальное значение силы, которое может быть приложено к физическому объекту, когда персонаж его касается (используется вместе с Touch Force Factor). Если рассчитанная сила превышает это значение, будет использовано значение текущего параметра. Если значение меньше нуля, ограничение на максимальную силу не применяется.
  • Repulsion Force — сила, которая постоянно прикладывается ко всем физическим объектам, пересекающимся с персонажем (Overlapping Components). Эта сила применяется к каждому объекту, с которым коллизия персонажа пересекается, и масштабируется по массе.

Character Movement

Character Movement
Character Movement
  • Ignore Client Movement Error Checks And Correction — определяет, будет ли компонент движения персонажа игнорировать проверки расхождений между позицией клиента и сервера (Client-Server Position Error Checks) и, соответственно, отключать автоматическую коррекцию позиции клиента сервером.
    • True: сервер не будет проверять и исправлять расхождения между позицией персонажа на клиенте и на сервере. Это полезно, если персонаж временно движется с очень высокой скоростью, и требуется, чтобы движение выглядело плавно на клиенте, без откатов и резких коррекций со стороны сервера. После завершения такого движения рекомендуется обязательно отключить это свойство, иначе синхронизация между клиентом и сервером будет нарушена и возможны читерские ситуации.
    • False: сервер будет проверять позицию персонажа и корректировать её, если клиент слишком сильно отошёл от серверной позиции (стандартная система репликации и предсказания движения).
  • Server Accept Client Authoritative Position — определяет, будет ли сервер принимать авторитетную (главную) позицию и скорость персонажа от клиента, если не обнаружено расхождений между позицией клиента и сервера после симуляции движения. Позволяет временно сделать клиента авторитетным (главным) по положению персонажа, чтобы обеспечить плавность и отзывчивость в моменты сложных для синхронизации перемещений.
    • True: после того как сервер симулирует движение персонажа на основе данных, отправленных клиентом, если не обнаружено ошибки (расхождения позиций), сервер копирует позицию, скорость и другие параметры движения с клиента. Это полезно для коротких рывков, dash-эффектов или других быстрых перемещений, которые сложно синхронизировать по сети. Если также включёно свойство Ignore Client Movement Error Checks And Correction, сервер не будет искать ошибку, и это поведение будет всегда активным.
    • False: сервер будет использовать свою обычную логику проверки и коррекции позиции, а не принимать авторитет клиента.

Character Movement: Avoidance

Character Movement: Avoidance
Character Movement: Avoidance
  • Use RVO Avoidance — включает использование RVO Avoidance (Reciprocal Velocity Obstacles) для компонента движения персонажа. Этот алгоритм используется для избежания столкновений с другими движущимися объектами (например, с другими персонажами или ботами) при планировании движения. Используется для создания реалистичного поведения толпы, где каждый персонаж динамически выбирает траекторию, чтобы не столкнуться с другими.
  • Avoidance Consideration Radius — радиус (в сантиметрах), в пределах которого другие объекты будут учитываться для алгоритмов избегания столкновений (RVO) при движении персонажа. Когда включён алгоритм избегания столкновений, этот радиус определяет, на каком расстоянии от персонажа движущиеся объекты (другие персонажи, боты, NPC) будут приниматься во внимание для расчёта траектории обхода. Чем больше радиус, тем раньше персонаж начнёт обходить другие объекты, тем более осторожным будет его движение в толпе. Если радиус слишком мал, персонаж будет реагировать на других только при очень близком приближении, что может привести к столкновениям.
  • Avoidance Weight — вес (коэффициент влияния), который определяет, насколько данный персонаж будет стараться избегать других объектов при использовании алгоритма RVO.
  • Avoidance UID — уникальный идентификатор (ID), который используется системой избегания столкновений для регистрации и отслеживания данного компонента движения персонажа в менеджере избегания (Avoidance Manager).
  • Avoidance Group — группа для движущегося объекта, используемая в системах навигации и избегания столкновений. Используется совместно с Groups To Avoid и Groups To Ignore, чтобы гибко настраивать, какие объекты будут учитывать друг друга при расчёте траекторий.
  • Groups To Avoid — маска групп, определяющая, агентов каких групп персонаж будет избегать при использовании систем избегания столкновений.
  • Groups To Ignore — маска групп, определяющая, агентов каких групп персонаж будет игнорировать при вычислении избегания столкновений

Root Motion

Root Motion
Root Motion
  • Allow Physics Rotation During Anim Root Motion — определяет, разрешено ли физике поворачивать (вращать) персонажа во время проигрывания анимаций с Root Motion (анимаций, в которых движение и вращение задаются непосредственно самой анимацией на основе корня персонажа).
  • Former Base Velocity Decay Half Life — определяет, как быстро персонаж теряет скорость, полученную от движущейся платформы (или другого объекта), когда он с неё сходит (например, прыгает или падает), если в этот момент применяется Root Motion Override (анимация, задающая движение).

Character Movement: Nav Mesh Movement

Character Movement: Nav Mesh Movement
Character Movement: Nav Mesh Movement
  • Project Nav Mesh Walking — определяет, будет ли компонент движения персонажа выполнять Raycast (трассировка луча) к физической геометрии под Nav Mesh для более точного позиционирования персонажа при движении по навигационной сетке. Если включено (True), персонаж точно позиционируется на физической поверхности под навигационной сеткой, обеспечивая соответствие рельефу.
  • Nav Mesh Projection Interval — интервал времени (в секундах), который определяет, как часто будет выполняться Raycast (трассировка луча) вниз от персонажа к реальной геометрии уровня для корректировки его положения относительно поверхности при движении по Nav Mesh.
  • Nav Mesh Projection Interp Speed — скорость интерполяции (сглаживания), с которой персонаж «догоняет» новую высоту, вычисленную при Raycast к реальной геометрии под Nav Mesh, когда включено свойство Project Nav Mesh Walking, при котором персонаж может резко менять высоту при каждом обновлении Raycast. Это свойство позволяет сгладить такие переходы. Значение 0 означает мгновенное применение новой позиции (без интерполяции). Значение больше 0 задаёт скорость, с которой персонаж плавно перемещается к целевой позиции, спроецированной на геометрию под Nav Mesh.
  • Nav Mesh Projection Height Scale Up — определяет масштаб (коэффициент) от полной высоты капсулы персонажа, используемый для проекции с навигационной сетки (Nav Mesh) на реальную геометрию уровня в верхнем направлении. Используется для определения реальной поверхности над Nav Mesh (например, потолки, навесы).
  • Nav Mesh Projection Height Scale Down — определяет масштаб (коэффициент) полной высоты капсулы, используемый для проекции с навигационной сетки на геометрию уровня вниз (насколько далеко вниз от позиции на навигационной сетке будет производиться трассировка для поиска реальной геометрии уровня). 
  • Nav Walking Floor Dist Tolerance — определяет, какую разницу в высоте между сервером и клиентом можно игнорировать при движении персонажа по NavMesh (Nav Walking Mode). Когда разница в высоте поверхности меньше этого значения, система игнорирует расхождение, предотвращая ненужные коррекции позиции.
  • Project Nav Mesh On Both World Channels — определяет, по каким каналам коллизий будет выполняться трассировка (Raycast) к геометрии уровня при корректировке положения персонажа, движущегося по Nav Mesh. Когда свойство установлено в значение True, система выполняет Raycast как по статичным (World Static), так и по динамическим (World Dynamic) объектам для определения актуальной поверхности под NavMesh.

Функции Character Movement Component

Силы и импульсы

Функции управления физическими воздействиями на персонажа
Функции управления физическими воздействиями на персонажа
  • Add Force — добавляет силу к персонажу, которая воздействует в течение времени (с учётом массы). Учитываться при расчёте движения на каждом тике (кадре).
  • Add Impulse — применяет к персонажу мгновенный импульс (например, от взрыва, удара, прыжка), мгновенно изменяющий скорость. Импульсы, добавленные в течение одного тика, накапливаются и применяются вместе.
  • Clear Accumulated Forces — очищает все накопленные силы и импульсы, добавленные через Add Force и Add Impulse, а также сбрасывает ожидающую скорость запуска (Pending Launch Velocity).

Движение и скорость

Функции контроля перемещения и параметров движения
Функции контроля перемещения и параметров движения
  • Calc Velocity — обновляет скорость (Velocity) и ускорение (Acceleration) персонажа с учётом трения, ускорения и замедления за прошедший кадр. Гравитация при этом не применяется.
  • Disable Movement — полностью отключает движение персонажа, устанавливая режим MOVE_None.
  • Get Current Acceleration — возвращает текущее ускорение персонажа, вычисленное на основе вектора ввода (Input Vector) на каждом обновлении тика.
  • Get Last Update Requested Velocity — возвращает скорость (Velocity), запрошенную системой следования по пути (Path Following) на последнем обновлении.
  • Get Last Update Velocity — возвращает вектор скорости, который был у персонажа после завершения последнего обновления движения.
  • Get Max Acceleration — возвращает максимальное ускорение для текущего режима движения (например, при ходьбе, плавании или полете).
  • Get Max Braking Deceleration — возвращает максимальное замедление (Deceleration), применяемое к персонажу при торможении (то есть, когда нет ускорения) в текущем режиме движения (ходьба, бег, плавание, полёт).
  • Get Min Analog Speed — возвращает минимальную скорость движения персонажа при минимальном наклоне аналогового стика.

Состояние и позиция

Функции информации о текущем состоянии персонажа
Функции информации о текущем состоянии персонажа
  • Get Character Owner — возвращает ссылку на персонажа (Character), которому принадлежит этот компонент движения.
  • Get Last Update Location — возвращает координаты персонажа на конец последнего тика (после завершения последнего обновления движения).
  • Get Last Update Rotation — возвращает ориентацию (поворот) персонажа на конец последнего тика (после завершения последнего обновления движения).
  • Has Custom Gravity — возвращает True, если у персонажа установлено пользовательское направление гравитации, отличное от стандартного.
  • Is Walking — возвращает True, если персонаж находится в режиме движения ходьбы (Walking).

Прыжки

Функции, связанные с прыжками
Функции, связанные с прыжками
  • Get Max Jump Height — возвращает максимальную высоту прыжка персонажа, рассчитанную по текущей силе гравитации и начальному импульсу прыжка, без учёта удержания кнопки прыжка.
  • Get Max Jump Height With Jump Time — возвращает максимальную высоту прыжка персонажа, учитывая как стартовый импульс, так и дополнительное время удержания кнопки прыжка.

Взаимодействие с окружением

Функции для работы с поверхностями и опорами
Функции для работы с поверхностями и опорами
  • Get Imparted Movement Base Velocity — возвращает скорость, которую персонаж должен унаследовать от движущегося основания (Movement Base), когда сходит или прыгает с него, с учётом разрешённых направлений передачи скорости.
  • Get Movement Base — возвращает компонент (Primitive Component), на котором в данный момент стоит или перемещается персонаж.
  • Is Walkable — возвращает True, если поверхность, по которой был получен Hit Result, является проходимой для персонажа (можно ли по ней ходить).
  • Get Perch Radius Threshold — возвращает минимальное расстояние от края капсулы персонажа, внутри которого персонаж не может устоять (Perch) на краю поверхности.
  • Get Valid Perch Radius — рассчитывает безопасный радиус для устойчивого положения капсулы персонажа на поверхности. Это расстояние определяет, насколько близко к краю капсулы персонажа можно стоять на поверхности, чтобы это считалось допустимым для балансирования (Perching) на краю.

Гравитация

Функции управления гравитационными параметрами
Функции управления гравитационными параметрами
  • Get Gravity Direction — возвращает текущее направление гравитации для персонажа как вектор.
  • Set Gravity Direction — устанавливает новое пользовательское направление гравитации для персонажа.

Избегание (Avoidance)

Функции системы предотвращения столкновений
Функции системы предотвращения столкновений
  • Set Avoidance Enabled — включает или отключает систему избегания столкновений (RVO Avoidance) для персонажа.
  • Set Avoidance Group — задаёт группы избегания (Avoidance Group) для персонажа в системе RVO Avoidance. Функция устарела, вместо неё следует использовать Set Avoidance Group Mask.
  • Set Avoidance Group Mask — задаёт маску групп избегания (Avoidance Group) для персонажа в системе RVO Avoidance.
  • Set Groups To Avoid — задаёт группы, которые персонаж будет избегать в системе RVO Avoidance. Функция устарела, вместо неё следует использовать Set Groups To Avoid Mask.
  • Set Groups To Avoid Mask — задаёт маски групп, которые персонаж будет избегать в системе RVO Avoidance.
  • Set Groups To Ignore — задаёт группы, которые персонаж будет игнорировать при избегании в системе RVO Avoidance, то есть не будет их избегать. Функция устарела, вместо неё следует использовать Set Groups To Ignore Mask.
  • Set Groups To Ignore Mask — задаёт маски группы, которые персонаж будет игнорировать при избегании в системе RVO Avoidance, то есть не будет их избегать.

Режимы движения

Режимы движения
Режимы движения
  • Set Movement Mode — позволяет программно переключать режим движения персонажа (ходьба, падение, плавание, полёт, кастомный режим).

Параметры поверхности

Функции определения параметров поверхности, по которой может ходить персонаж
Функции определения параметров поверхности, по которой может ходить персонаж
  • Set Walkable Floor Angle — задаёт максимальный угол наклона поверхности, по которой персонаж может ходить.
  • Set Walkable Floor Z — задаёт минимальное значение Z-компоненты нормали поверхности для ходьбы и автоматически пересчитывает соответствующий угол наклона поверхности.
  • Get Walkable Floor Angle — возвращает максимальный угол в градусах, под которым поверхность считается проходимой для персонажа.
  • Get Walkable Floor Z — возвращает минимальное значение Z-компоненты нормали поверхности, при котором она считается проходимой для персонажа. Всё, что меньше — слишком круто для ходьбы.

Поверхность и коллизии

Функции работы с поверхностью под персонажем
Функции работы с поверхностью под персонажем
  • Compute Floor Dist — вычисляет расстояние от капсулы персонажа до ближайшей Walkable поверхности под ним (пол, платформа и т.д.).
  • Find Floor — выполняет вертикальный Sweep-тест капсулой персонажа, чтобы найти ближайшую Walkable поверхность под ним.

Ввод и управление

Ввод и управление
Ввод и управление
  • Get Analog Input Modifier — возвращает коэффициент [0..1], отражающий силу последнего аналогового входа управления.

Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.


наш Телеграм канал

Оцените статью
( 1 оценка, среднее 5 из 5 )
Поделитесь этой статьей со своими знакомыми в социальных сетях, возможно, эта статья кому-то будет полезна
Unreal Engine - это просто
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.