- Character
- Взаимосвязь компонентов класса Character
- Ключевая функциональность класса Character
- Наследование классов
- Настройки Details для Character (class Defaults)
- Прямые свойства Details класса Character
- Унаследованные свойства Details
- Blueprint-функции класса Character
- События класса Character
- Функции анимации (Animation)
- Функции движения (Movement)
- Функции для работы с компонентами и трансформацией (Components & Transforms)
Друзья, приветствую, с Вами Будуев Антон. В данной статье мы поговорим о классе Character в Unreal Engine (UE4, UE5), представляющего объект реалистичного персонажа с компонентами движения, коллизии и визуализации скелетной модели с поддержкой анимации.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Character
Character — это класс в Unreal Engine, который представляет собой расширенный тип Pawn (игрового персонажа), обладающий реалистичной физикой передвижения, капсульной коллизией для взаимодействия с миром и скелетной сеткой для визуализации персонажа с поддержкой анимации. Этот класс предоставляет базу для двуногих персонажей, которые могут ходить, прыгать, приседать, плавать и летать.
Перевод официальной справки: Character — это Pawn (игровой персонаж), который имеет меш (модель), коллизию и встроенную логику движения. Данный класс отвечает за все физические взаимодействия игрока или ИИ с игровым миром, а также реализует базовые модели сетевого взаимодействия и ввода. Предназначен для вертикально ориентированных персонажей, способных ходить, прыгать, летать и плавать с использованием компонента Character Movement Component.

Класс Character в Unreal Engine представляет собой специализированный тип игрового персонажа, основанный на классе Pawn, который объединяет в себе сложную логику перемещения, коллизии и взаимодействия с игровым миром. Он предназначен для создания управляемого игроком или искусственным интеллектом персонажа с вертикальной ориентацией, способного ходить, прыгать, плавать и летать. Класс обеспечивает все необходимые механики, включая поддержку мульти-прыжков, удержания кнопки прыжка, приседания и взаимодействия с движущимися объектами в мире.
Обязательной частью класса являются конкретные компоненты, каждый из которых выполняет свою ключевую функцию:
- Capsule Component (Collision Cylinder) — капсульный коллайдер, который обеспечивает физическое присутствие персонажа в мире и его столкновения с окружающей средой. Этот компонент всегда ориентирован вертикально и служит корневым компонентом персонажа, отвечая за обработку коллизий и взаимодействие с физической системой.
- Skeletal Mesh Component (Mesh) — отвечает за визуальное отображение персонажа и его анимацию. С помощью этого компонента персонаж получает скелетную модель, позволяющую воспроизводить сложные анимации и обеспечивать реалистичное движение.
- Character Movement Component (CharMoveComp), ключевой компонент, являющийся ядром системы движения персонажа. Этот компонент управляет различными режимами перемещения, такими как ходьба, бег, прыжки, падение, плавание и полёт, а также обрабатывает взаимодействие с «движущейся опорой», сетевую репликацию движения и корректировку позиции.
Класс Character тесно интегрирован с системой сетевой репликации Unreal Engine, что позволяет поддерживать согласованное и плавное движение персонажа у всех участников сетевой игры. Особое внимание уделяется поддержке Root Motion — анимаций, которые напрямую управляют перемещением персонажа, с механизмами корректного воспроизведения и синхронизации между сервером и клиентами. Кроме того, класс предусматривает события и делегаты, дающие возможность расширять и настраивать поведение персонажа в Blueprints или C++ по мере изменения состояния движения, прыжков или приседания.
Таким образом, Character является универсальной и надежной основой для создания полнофункциональных игровых персонажей с богатым набором возможностей, обеспечивая разработчикам удобный и гибкий каркас для реализации физики, анимации и сетевого взаимодействия в играх на Unreal Engine.
Взаимосвязь компонентов класса Character
Компоненты Capsule Component, Mesh (Skeletal Mesh Component) и Character Movement Component в классе Character тесно связаны и вместе формируют фундамент для физического, визуального и логического представления игрового персонажа.

Capsule Component выступает в роли корневого компонента и представляет собой капсульный коллайдер, который определяет физическую оболочку персонажа в мире. Он отвечает за обработку столкновений и взаимодействие с окружающей средой, задавая вертикально ориентированную форму, вокруг которой строятся все движения и расчёты столкновений.
Character Movement Component — специализированный компонент, управляющий движением персонажа и использующий корневой компонент капсулы в качестве основного «объекта» перемещения. При создании персонажа именно Capsule Component назначается обновляемым компонентом внутри системы движения (Updated Component). Все вычисления, связанные с физическим положением, столкновениями, гравитацией и режимами перемещения (будь то ходьба, прыжки или плавание) применяются именно к капсуле.
Mesh (Skeletal Mesh Component) представляет визуальную модель персонажа. Это скелетная структура с анимациями, которая хотя и не влияет непосредственно на коллизии и физику (данное поведение можно изменить, например, подключив Ragdoll) или логику движения, всегда синхронизирована с капсулой. Mesh прикреплён к Capsule Component, что гарантирует, что при перемещении компонента капсулы визуальная модель смещается и поворачивается вместе с ним. Для обеспечения плавного отображения анимаций и корректной синхронизации положений в сетевой игре, класс кэширует относительное смещение и вращение меша относительно капсулы. Именно на Mesh проигрываются анимации, включая Root Motion, однако физическое позиционирование персонажа базируется исключительно на капсульном коллайдере (Capsule Component).
Таким образом, взаимосвязь этих компонентов можно представить так:
- Capsule Component — физическая капсула (физический каркас) персонажа,
- Character Movement Component — управляющая логика движения, обновляющая состояние и положение капсулы,
- Mesh — визуальный каркас персонажа, отображающий его анимации и движения, синхронизированные с капсулой.
Вместе они обеспечивают корректную и слаженную работу персонажа в игровом мире.
Аналогично выстроен и порядок обновления компонентов в каждом кадре. Сначала происходит обновление физики и позиции Capsule Component через Character Movement Component, после чего обновляется Mesh для отрисовки актуального визуального состояния персонажа. Такая последовательность гарантирует плавное, точное и согласованное взаимодействие между физикой, логикой перемещения и визуализацией.
Кроме того, между компонентами настроены зависимости обновления тиков (Tick Prerequisites), которые не позволяют Mesh обновляться раньше завершения обновления Character Movement Component, что предотвращает рассинхронизацию и обеспечивает целостность отображаемого движения в игровом мире.
Ключевая функциональность класса Character
- Character Movement — управление движением персонажа с поддержкой ходьбы, бега, прыжков, плавания и полёта через компонент Character Movement Component.
- Capsule Collision — обработка коллизий персонажа с помощью капсульного коллайдера для взаимодействия с миром и физикой через компонент Capsule Component.
- Skeletal Mesh — содержит скелетную модель, которая визуализирует форму и структуру персонажа в мире через компонент Skeletal Mesh Component.
- Animation — интегрирован с системой Animation Blueprints (логика состояний анимации) и Animation Assets (ресурсы анимаций), воспроизводимыми на Skeletal Mesh Component.
- Anim Montage — поддержка воспроизведения и управления анимационными монтажами.
- Root Motion — управление анимациями с корневым движением (Root Motion) и их синхронизация между сервером и клиентами для точного воспроизведения движения.
- Jump — поддержка нескольких прыжков, удержания кнопки прыжка, управления состояниями прыжка, а также его корректного завершения.
- Crouch — управление состоянием приседания с поддержкой репликации и событий начала и окончания приседания.
- Base Interaction — взаимодействие с движущимися платформами и поверхностями, обеспечивая корректное положение и движение относительно базы.
- Network Replication — сетевая синхронизация позиций, состояний движения и анимаций для плавного и точного отображения на клиентах.
- Events — предоставление событий и делегатов (например, On Jumped, On Landed, On Movement Mode Changed) для пользовательского расширения поведения персонажа.
Наследование классов
Класс Character наследуется от класса Pawn (реализующего функционал объекта, управляемого контроллером), добавляя комплекс специализированных компонентов, превращая его в полнофункционального игрового персонажа с несколькими режимами передвижения, учитывающих физику, коллизией, Skeletal Mesh с анимацией и полной поддержкой сетевой игры. Это облегчает разработку типичных игровых героев с естественным поведением и реакциями в игровом мире.

Настройки Details для Character (class Defaults)
Настройки класса Character в панели Details довольно ограничены. Большинство параметров, отображаемых в этой вкладке, наследуются от встроенных компонентов или от родительских классов. В рамках этой статьи мы сосредоточимся только на прямых свойствах самого Character. Остальные, унаследованные настройки, подробно описаны в соответствующих статьях по классам Unreal Engine.
Прямые свойства Details класса Character

- Jump Max Hold Time — максимальное время (в секундах), в течение которого удержание клавиши прыжка продолжает добавлять вертикальную скорость персонажу. При вызове функции Stop Jumping добавление вертикальной скорости прекращается немедленно (на следующем тике). Если клавишу удерживать дольше этого времени, импульс прыжка автоматически прекращается, однако персонаж может продолжать движение по инерции (сохраняется текущая скорость движения).
- Jump Max Count — максимальное количество прыжков, которые персонаж может совершить подряд до касания земли (например, 1 — одинарный прыжок, 2 — двойной прыжок). Счётчик прыжков автоматически сбрасывается при приземлении.
- Crouched Eye Height — вертикальное смещение камеры (в сантиметрах) относительно центра коллизионной капсулы персонажа при состоянии приседания. Определяет высоту расположения «глаз» персонажа (точки обзора камеры) при приседании, что влияет на визуальное ощущение и механику прицеливания. Значение должно быть меньше Base Eye Height.
Унаследованные свойства Details
- Details компонента Capsule Component,
- Details компонента Skeletal Mesh Component,
- Details компонента Character Movement,
- Details класса Actor,
- Details класса Pawn.
Blueprint-функции класса Character
События класса Character

- On Launched — событие вызывается, когда что персонаж был запущен функцией Launch Character с заданной скоростью Launch Velocity. При этом параметры XYOverride и ZOverride указывают, были ли соответственно заменены компоненты скорости по осям XY и Z вместо добавления.
- On Jumped — событие вызывается в момент, когда персонаж только что начал прыжок.
- On Reached Jump Apex — диспетчер события, вызываемый, когда персонаж достигает высшей точки своей траектории прыжка.
- On Landed — событие вызывается, когда персонаж только что приземлился после падения, перед тем как сменить свой режим движения с Falling на другой. Параметр Hit содержит данные столкновения с поверхностью, на которую персонаж приземлился, и может использоваться для запуска дополнительной логики, например, анимаций или эффектов.
- On Start Crouch — событие вызывается, когда персонаж начинает приседать, в том числе и на неуправляемых (Non-Owned) персонажах через репликацию флага Is Crouched. Параметры Half Height Adjust и Scaled Half Height Adjust передают разницу в высоте коллизии до и после приседания, с учётом и без учёта масштабирования компонента, что позволяет корректно настроить визуальное и физическое состояние персонажа.
- On End Crouch — событие вызывается, когда персонаж перестаёт приседать, в том числе на неуправляемых (Non-Owned) персонажах через репликацию флага Is Crouched. Параметры Half Height Adjust и Scaled Half Height Adjust передают разницу в высоте коллизии между обычным и присевшим состоянием, с учётом и без учёта масштабирования компонента, что позволяет корректно настроить визуальное и физическое состояние персонажа.
- On Movement Mode Changed — событие вызывается для уведомления персонажа о смене режима движения, включая как стандартные, так и пользовательские режимы. Параметры содержат предыдущий и новый режимы движения, а также их кастомные значения, если режим Custom используется, что позволяет Blueprint-логике реагировать на изменения состояния движения персонажа.
- Update Custom Movement — событие вызывается каждый тик при активном кастомном режиме движения (MOVE_Custom) и позволяет реализовать пользовательскую логику передвижения непосредственно в Blueprints. В C++ для этой цели следует переопределять метод PhysCustom() в производном классе UCharacterMovementComponent, а не использовать это событие.
- On Walking Off Ledge — событие вызывается, когда персонаж теряет опору под ногами и готов начать падение, поскольку поверхность под ним больше не считается проходимой. Оно предоставляет доступ к данным о предыдущем положении и нормалях поверхности, позволяя изменить поведение перед началом падения — например, скорректировать начальную скорость или отменить переход в режим падения, если в обработчике вручную изменить режим движения.
Функции анимации (Animation)

- Play Anim Montage — запускает воспроизведение заданного анимационного монтажа (Anim Montage) на меше персонажа с указанной скоростью воспроизведения (In Play Rate). При успешном запуске возвращает длину анимации в секундах, либо 0.0, если воспроизведение не удалось
- Stop Anim Montage — завершает воспроизведение указанного анимационного монтажа (Anim Montage) на меше персонажа. Если в качестве аргумента передан Null, будет остановлен текущий активный монтаж. Длительность плавного завершения (Blend Out Time) берётся из самого анимационного монтажа, который прекращается, чтобы обеспечить корректное завершение анимации
- Get Current Montage — возвращает указатель на анимационную монтажную последовательность (Anim Montage), которая в данный момент воспроизводится на скелетной сетке персонажа.
- Is Playing Anim Root Motion — возвращает значение True, если в данный момент воспроизводится анимация (например, анимационный монтаж), которая управляет перемещением персонажа через Anim Root Motion. Это не включает другие источники корневого движения, такие как Root Motion Sources.
- Has Any Root Motion — возвращает значение True, если в данный момент на персонаже выполняется корневое движение (Root Motion) из любого источника — это может быть Anim Root Motion или Root Motion Sources.
- Is Playing Networked Root Motion Montage — возвращает значение True, если персонаж воспроизводит анимационный монтаж с корневым движением, и компонент движения персонажа (Character Movement Component) находится в режиме Root Motion From Montages Only. В этом случае движение полностью управляется анимационными монтажами с поддержкой сетевой репликации.
- Get Anim Root Motion Translation Scale — возвращает текущий коэффициент масштабирования, применяемый только к перемещению (Translation) из Anim Root Motion. Не влияет на вращение (Rotation). Значение по умолчанию обычно равно 1.0.
Функции движения (Movement)

- Launch Character — задаёт отложенную скорость запуска (Launch Velocity), которая будет применена на следующем обновлении компонента движения, переводя персонажа в состояние падения (MOVE_Falling). Скорость может частично заменять или добавляться к текущей в зависимости от XYOverride и ZOverride. Функция всегда вызывает событие On Launched, оповещая Blueprint-логику о факте запуска, вне зависимости от исходного состояния персонажа.
- Jump — запускает прыжок персонажа на следующем обновлении, позволяя прыжку выполняться с учётом времени удержания клавиши, если настроено свойство Jump Max Hold Time. После запуска необходимо вызвать функцию Stop Jumping, чтобы прекратить применение вертикальной скорости прыжка.
- Stop Jumping — останавливает прыжок персонажа на следующем обновлении, прекращая добавление вертикальной скорости от прыжка. Если не вызвать эту функцию, персонаж продолжит получать вертикальную скорость пока не истечёт Jump Max Hold Time.
- Can Jump — возвращает значение True, если персонаж в текущем состоянии может прыгать.
- Is Jump Providing Force — возвращает значение True, если прыжок активно добавляет вертикальную силу, например, когда клавиша прыжка удерживается и не превышено максимальное время удержания. Используется для определения, продолжается ли применение силы прыжка в текущий момент.
- Crouch — отправляет запрос на приседание персонажа, который будет обработан на следующем обновлении компонента движения. Этот запрос изменит состояние Is Crouched, что повлечёт за собой изменение высоты капсулы коллизии и позиции меша.
- Un Crouch — отправляет запрос на прекращение приседания персонажа, обрабатываемый на следующем обновлении компонента движения. Снимает флаг приседания, переводя персонажа в стоячее положение.
- Can Crouch — возвращает значение True, если персонаж в текущем состоянии способен присесть и ещё не присел. Проверяет внутренние условия компонента движения и состояние персонажа, влияющие на возможность приседания.
Функции для работы с компонентами и трансформацией (Components & Transforms)

- Get Base Translation Offset — возвращает текущее базовое смещение позиции скелетного меша относительно центра коллизионной капсулы персонажа. Это значение используется для корректного позиционирования меша при движении по динамическим объектам (например, платформам) и при сетевой интерполяции.
- Get Base Rotation Offset Rotator — возвращает текущее базовое дополнительное вращение скелетного меша относительно коллизионной капсулы в виде углов Эйлера (Rotator). Это вращение применяется для компенсации вращения опорных объектов (например, движущихся платформ) и обеспечения корректной синхронизации ориентации меша в сетевой игре.
- Cache Initial Mesh Offset — сохраняет текущее относительное смещение и вращение скелетного меша (относительно коллизионной капсулы) в качестве базовых значений. Эти значения используются для корректировки позиции и вращения меша при движении по динамическим объектам и при сетевой репликации. Функция автоматически вызывается при инициализации персонажа, но может быть вызвана вручную, если в рантайме требуется обновить базовые смещения (например, после изменения положения меша анимацией или скриптом).
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.