Timeline в Unreal Engine

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

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

Timeline в Unreal Engine

Timeline — это специализированный инструмент в Unreal Engine, предназначенный для создания анимаций (простых движений), а также плавных изменений параметров объектов на протяжении заданного промежутка времени. Он отлично подходит для решения часто встречающихся задач, не требующих сложной кинематографической анимации, таких как передвижение объектов, открытие дверей, изменение освещения или плавная смена каких-либо свойств.

Timeline в Blueprint представлен в виде специального узла, который вызывается в Event Graph через правую клавишу мыши по команде Add Timeline.

Добавить Timeline можно через команду Add Timeline
Добавить Timeline можно через команду Add Timeline

Двойной клик по этому узлу открывает редактор дорожек (Timeline Editor), где можно создавать и настраивать кривые (Curves) различных типов данных: Float, Vector, Color. Для каждой дорожки задаются ключевые значения (Keys) с привязкой ко времени, между которыми происходит интерполяция (сглаживание), обеспечивающая плавные переходы.

Во время работы Timeline на каждом обновлении (Tick) через соответствующий выходной пин узла выдаётся текущее значение кривой, что позволяет использовать его в игровой логике.

Сам узел Timeline содержит множество входных и выходных пинов:

Timeline в Unreal Engine
Timeline в Unreal Engine

Входные пины (Input Pins):

  • Play — запускает воспроизведение Timeline с текущего времени.
  • Play from Start — запускает воспроизведение с начала Timeline.
  • Stop — останавливает воспроизведение на текущем времени.
  • Reverse — воспроизводит Timeline в обратном направлении с текущего времени.
  • Reverse from End — воспроизводит Timeline в обратном направлении, начиная с конца.
  • Set New Time — устанавливает новое текущее время воспроизведения (через параметр New Time).
  • New Time — параметр для задания нового времени воспроизведения.

Выходные пины (Output Pins):

  • Update — срабатывает каждый Tick во время проигрывания Timeline.
  • Finished — сигнализирует о завершении воспроизведения Timeline (например, при достижении конца в прямом направлении или начала — в обратном). Остановка через Stop не вызывает этот пин.
  • Direction — выводит текущее направление воспроизведения (вперёд или назад).

Кроме того, Timeline выводит значения с каждой созданной дорожки (float, vector, color), которые можно использовать для управления параметрами объектов. Названия этих выходных пинов соответствуют именам дорожек, заданных в редакторе Timeline Editor.

Редактор Timeline Editor

Как уже упоминалось выше, при двойном клике на узел Timeline в Blueprint открывается редактор дорожек (Tracks) для создания и настройки кривых. По умолчанию редактор пуст. Чтобы добавить новую дорожку, нажмите кнопку +Track. Появится список типов дорожек, из которых можно выбрать:

  • Float — числовая кривая с плавающей точкой;
  • Vector — кривая в 3D-пространстве (вектор);
  • Event — событие, вызываемое в заданный момент времени. Создаёт отдельный Execution Pin с именем события на узле Timeline в Event Graph;
  • Color — кривая цвета.
Выбор типа дорожки кривой
Выбор типа дорожки кривой

После выбора типа дорожки она добавляется в редактор, где можно сразу задать ей имя. Это имя будет отображаться и на самом узле Timeline в Blueprint в выходном пине для получения текущего значения дорожки.

Название дорожки кривой
Название дорожки кривой

Длительность Timeline задаётся параметром Length (в секундах).

Timeline length (длина дорожки в секундах)
Timeline length (длина дорожки в секундах)

В этом же блоке расположены кнопки управления Timeline:

  • Use Last Keyframe — учитывать ли последний кадр. Обычно, если Timeline зациклен (Loop), данный параметр отключают, иначе последний кадр может создавать рывки.
  • AutoPlay — автоматический запуск Timeline при активации Blueprint.
  • Loop — зацикливание воспроизведения анимации.
  • Replicated — включение сетевой репликации (для синхронизации между сервером и клиентами).
  • Ignore Time Dilation — игнорирование глобального замедления времени в игре.
  • Tick Group — управление группой тиков для порядка обновления Timeline.

Для добавления ключевых точек (Key) к кривой кликните правой кнопкой мыши по области дорожки и выберите Add Key to CurveFloat (для floatдорожки). Аналогичные опции доступны и для других типов.

Добавление ключевой точки
Добавление ключевой точки

У каждой ключевой точки можно настроить параметры:

  • Time — момент времени, в который находится точка;
  • Value — значение кривой в этой точке.
Настройка значений ключевой точки
Настройка значений ключевой точки

Также ключи можно редактировать или удалять.

После создания нескольких ключевых точек выделите их все, кликните правой кнопкой и выберите тип интерполяции (сглаживания) кривой. Обычно рекомендуется использовать опцию Auto, которая обеспечивает плавные переходы между ключами. Доступны также:

  • Linear — линейное изменение (прямая линия между точками);
  • Constant — мгновенный скачок (ступенчатая функция);
  • Break — ручная настройка касательных для каждого ключа.
Выбор типа сглаживания кривой
Выбор типа сглаживания кривой

Также поддерживается использование внешних кривых (External Curves) — это отдельные ассеты Curve, которые можно подключить к Timeline для повторного использования в разных местах проекта.

В результате внутри узла Timeline будет создана дорожка с заданной длительностью. Во время выполнения значения кривой доступны на выходном пине с именем, совпадающим с названием дорожки, что позволяет использовать эти данные для анимации, простого движения объекта или других целей.

Возврат значений кривой в Timeline
Возврат значений кривой в Timeline

Тонкости использования Timeline

  • Оптимальная длина анимации — параметр Length задаёт общую длительность Timeline в секундах. Для цикличных эффектов стоит активировать опцию Loop, чтобы анимация воспроизводилась повторно без резких переходов.
  • Выбор интерполяции ключевых кадров — интерполяция (Auto, Break, Linear, Constant) влияет на плавность переходов между ключевыми точками. Обычно достаточно опции Auto для плавных кривых.
  • Множественные типы дорожек для сложных эффектовTimeline поддерживает различные дорожки: Float, Vector, Color, Event. Комбинируя их, можно одновременно изменять позицию, цвет и вызывать события, что позволяет создавать комплексные анимации.
  • Управление направлением воспроизведения — пины Reverse и Reverse from End позволяют воспроизводить Timeline в обратном направлении, что удобно для анимаций открывания/закрывания, начала/завершения эффектов.
  • Обработка завершения анимации — пин Finished позволяет запускать дополнительные действия по окончании Timeline, например, переключение состояния или отключение объекта.
  • Учет времени игры — опция Ignore Time Dilation позволяет игнорировать глобальное замедление времени в игре, что полезно для эффектов, которые должны проигрываться независимо от замедления игрового мира.
  • Производительность и количество Timeline — рекомендуется минимизировать количество одновременно активных Timeline и ограничивать их длительность для сохранения производительности.
  • Сетевые особенности — опция Replicated нужна для синхронизации воспроизведения Timeline в сетевой игре между сервером и клиентами.
  • Ограничение использования внутри функций BlueprintTimeline нельзя использовать внутри Blueprint-функций, так как он обладает внутренним состоянием и асинхронным воспроизведением, что несовместимо с синхронной природой функций. Используется он в Event Graph, который поддерживает асинхронные узлы с состоянием.
  • Внешние кривые (External Curves)Timeline поддерживает подключение внешних кривых: ассетов, которые можно применять повторно в других Timeline, что улучшает управляемость и повторное использование анимационных данных.

Работа с Timeline на практике

Рассмотрим пример простого передвижения раздвижной двери с использованием Timeline и функции линейной интерполяции (Lerp) при входе и выходе игрока в зону коллизии.

  1. Создадим простой Актор BP_Door, состоящий из стены с дверным проёмом, самой двери и коллизионного компонента Box Collision, определяющего зону взаимодействия.
Актор двери BP_Door
Актор двери BP_Door
  1. Внутри Актора добавим узел Timeline и создадим в нём дорожку типа Float с именем Alpha длительностью 1 секунду. Эта дорожка будет содержать две ключевые точки:
    Time = 0, Value = 0;
    Time = 1, Value = 1.
    Для обеих ключевых точек выберем тип интерполяции Auto, обеспечивающий плавный переход.
Кривая Alpha типа Float, состоящая из 2 точек: (0,0) и (1,1)
Кривая Alpha типа Float, состоящая из 2 точек: (0,0) и (1,1)
  1. Далее в событии Event Begin Play сохраним стартовую позицию двери — её начальное расположение при запуске уровня.
  2. Для открытия двери запустим Timeline с помощью пина Play по событию Event Begin Overlap при входе игрока в зону коллизии. Перед запуском через Cast проверим, что пересекающий коллизию объект (Other Actor) — это персонаж игрока (BP_ThirdPersonCharacter).
  3. Для закрытия двери запустим тот же Timeline в обратном направлении через пин Reverse, связав его с событием Event End Overlap, которое срабатывает при выходе игрока из зоны.
  4. Положение двери будем обновлять на каждом тике Timeline с помощью функции Lerp (Vector): в качестве стартовой точки (A) возьмём сохранённую позицию, а в качестве конечной (B) — позицию, смещённую от стартовой на -110 см по локальной оси X. Коэффициент интерполяции будет задаваться значением Alpha, получаемым из Timeline на каждом обновлении.
  5. Результат интерполяции подаём на вход функции Set Relative Location, которая изменит локальную позицию двери при каждом обновлении Timeline через выходной пин Update.
Логика анимации открытия/закрытия двери с помощью Timeline, Lerp и Set Relative Location
Логика анимации открытия/закрытия двери с помощью Timeline, Lerp и Set Relative Location

В итоге, как только игрок пересекается с коллизией взаимодействия двери, дверь открывается (плавно сдвигается влево).

При пересечении игрока с коллизией дверь открывается
При пересечении игрока с коллизией дверь открывается

И как только игрок выходит из коллизии, дверь также плавно закрывается (плавно сдвигается вправо).

При окончании пересечения игрока с коллизией дверь закрывается
При окончании пересечения игрока с коллизией дверь закрывается

Таким образом, Timeline задаёт временной ход анимации и формирует управляющую кривую, Lerp плавно рассчитывает промежуточные положения координат, а Set Relative Location применяет эти изменения к положению объекта в игре. Такая связка позволяет создавать простые и эффективные анимации с контролем времени и плавности движения в Unreal Engine Blueprint.

Основные функции (узлы) для работы с Timeline

Timeline можно настраивать не только через редактор Timeline Editor, но и динамически с помощью специальных узлов в Blueprint. Для этого необходимо получить ссылку на нужный Timeline: все созданные Timeline отображаются в панели My Blueprints в разделе переменных в категории Components.

Переменная, хранящая ссылку на Timeline
Переменная, хранящая ссылку на Timeline

Обладая этой ссылкой, вы можете вызывать различные узлы управления и настройки Timeline. Рассмотрим данные узлы подробнее.

Get Play Rate
Get Play Rate
Get Play Rate

Get Play Rate — возвращает текущую скорость воспроизведения Timeline как значение типа float. Полезно для динамического изменения скорости анимации или проверки, с какой скоростью проигрывается Timeline.

Get Playback Position
Get Playback Position
Get Playback Position

Get Playback Position — возвращает текущую позицию воспроизведения Timeline в секундах (float). Используется для отслеживания, в каком моменте таймлайна вы находитесь.

Get Timeline Length
Get Timeline Length
Get Timeline Length

Get Timeline Length — возвращает общую длительность Timeline в секундах.

Is Looping
Is Looping
Is Looping

Is Looping — возвращает значение True, если Timeline зациклен, и False, если нет. Позволяет узнать, настроен ли таймлайн на повторное воспроизведение.

Is Playing
Is Playing
Is Playing

Is Playing — возвращает значение True, если Timeline в данный момент воспроизводится, и False, если остановлен.

Is Reversing
Is Reversing
Is Reversing

Is Reversing — возвращает значение True, если Timeline воспроизводится в обратном направлении, иначе False.

Play
Play
Play

Play — запускает воспроизведение Timeline с текущей позиции.

Play from Start
Play from Start
Play from Start

Play from Start — запускает воспроизведение Timeline с начала.

Reverse
Reverse
Reverse

Reverse — начинает воспроизведение Timeline в обратную сторону с текущей позиции.

Reverse from End
Reverse from End
Reverse from End

Reverse from End — начинает воспроизведение Timeline в обратную сторону с конца Timeline.

Stop
Stop
Stop

Stop — останавливает воспроизведение Timeline.

Set Looping
Set Looping
Set Looping

Set Looping — устанавливает режим зацикливания Timeline.

Set New Time
Set New Time
Set New Time

Set New Time — задаёт новую позицию воспроизведения Timeline.

Set Play Rate
Set Play Rate
Set Play Rate

Set Play Rate — устанавливает скорость воспроизведения Timeline.

Set Playback Position
Set Playback Position
Set Playback Position

Set Playback Position — устанавливает позицию воспроизведения Timeline. Позволяет также указать, должны ли быть вызваны события таймлайна, оказавшиеся между старой и новой позицией.

Set Timeline Length
Set Timeline Length
Set Timeline Length

Set Timeline Length — устанавливает общую длительность Timeline.

Set Timeline Length Mode
Set Timeline Length Mode
Set Timeline Length Mode

Set Timeline Length Mode — переключает режим длины Timeline: либо проигрывать по полной длине Timeline, либо до последнего ключевого кадра.

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


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

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

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