− Скрыть
Для реализации такой сложной, последовательной анимации через одну переменную t (от 0 до 1) в Unreal Engine 5 лучше всего подходит один из двух подходов, в зависимости от того, как вы предпочитаете работать: через кривые в Blueprint или через секвенсор.
Ниже подробно разобраны оба варианта, чтобы вы могли выбрать наиболее удобный.
Способ 1: Timeline + Curve Float (Самый гибкий код)
Это классический и самый чистый способ для программирования логики в Blueprint. Вместо того чтобы пытаться математически делить t (0.0–1.0) на диапазоны через IF/Else, вы настраиваете кривые зависимости для каждого элемента.
Как это устроено:
Внутри компонента Timeline вы создаете не одну дорожку, а несколько Float Tracks (по одной на каждый этап анимации). Длина самого Timeline устанавливается ровно в 1.0 секунду.
Track_TopLocks (Верхние железки): Значение 0 в секунде 0.0, плавно переходит в 1 в секунду 0.25, дальше идет ровная линия на значении 1.
Track_BottomLocks (Нижние железки): Значение 0 до секунды 0.2, потом плавно растет до 1 к секунде 0.45.
Track_Disk (Вращение диска): Начинает вращение (значение от 0 до 360) только на промежутке от 0.4 до 0.7 секунды.
Track_Steam & Door (Пар и открытие): Срабатывают на отрезке 0.7–1.0.
Реализация в Blueprint:
Вместо функции Set Variable (t) на Tick, вы используете функцию Set New Time для Timeline, передавая туда ваше значение t.
Из выходов (Outputs) этого Timeline вы получаете готовые, изолированные значения для каждого элемента и через Set Relative Location/Rotation обновляете их.
Пар (VFX): В точке, где кривая пара начинает расти, можно вызвать событие (Event Track) или через Branch активировать Niagara Particle System.
Плюс: Если вы захотите закрыть дверь обратно, вы просто пускаете этот же Timeline вспять (или уменьшаете t от 1 до 0), и вся последовательность идеально повторится в обратном порядке.
Способ 2: Level Sequence + Timeline (Визуальный метод)
Если вам тяжело настраивать тайминги «вслепую» через графики кривых, можно сделать это в полноценном редакторе анимаций.
Как это устроено:
Создается Level Sequence (или Actor Sequence, если хотите упаковать всё внутрь одного Blueprint).
Вы собираете красивую анимацию двери на таймлайне секвенсора: двигаете кости или отдельные Static Mesh компоненты, добавляете триггер на пуск пара в нужный кадр. Вся анимация длится, например, 100 кадров.
В Blueprint вы создаете Timeline (длиной 1.0) или используете вашу переменную t.
Реализация в Blueprint:
Вы берете ссылку на Sequence Player и используете узел Set Playback Position.
Математика простая: вы умножаете ваше t (0..1) на Total Duration (общую длительность секвенции в кадрах или секундах) и передаете результат в этот узел. Дверь будет послушно следовать за ползунком t.
Что лучше выбрать?
Если элементы двери — это отдельные Static Mesh компоненты внутри одного Blueprint, используйте Способ 1 (Timeline с несколькими кривыми). Это работает быстрее, надежнее и не требует создания лишних файлов в проекте.
Если у двери сложная скелетная сетка (Skeletal Mesh) со множеством костей, или вам критически важно видеть интерактивное превью анимации прямо в окне Core-редактора, используйте Способ 2 (Sequencer).
Где посмотреть похожие примеры? (Поисковые запросы)
В YouTube очень много туториалов по запросу «Vault Door Blueprint Unreal Engine», но большинство из них показывают простое открытие. Чтобы найти именно пошаговую логику, используйте следующие ключевые фразы:
"Unreal Engine sequential animation timeline" — покажет, как правильно настраивать несколько дорожек в одном таймлайне для создания эффекта очереди.
"UE5 Controlling Sequence with Blueprint" или "Drive sequencer with timeline" — отличные уроки, если решите делать через секвенсор. Поможет понять, как связать progress-бар или переменную t с кадрами анимации.
"Sci-Fi Door mechanical animation UE5" — концептуальные видео, где разбирается механика многосоставных шлюзов.
Один из классических подходов без таймлайна (если t меняется хаотично вручную) — это использование узлов Map Range Clamped в Blueprint. Вы берете t, и для верхних железок настраиваете: In Range (0.0 - 0.25) -> Out Range (0.0 - 100.0 см). Для диска: In Range (0.4 - 0.7) -> Out Range (0.0 - 360.0 градусов). Это позволит обойтись даже без Timeline, чисто на формулах.