Blueprint-функция Set View Target With Blend в Unreal Engine

Друзья, приветствую, с Вами Будуев Антон. В этой статье мы обсудим Blueprint-функцию Set View Target With Blend, с помощью которой в Unreal Engine (UE4, UE5) производится смена камер с одной на другую. И, конечно же, разберём соответствующий практический пример.

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

Set View Target With Blend

Blueprint-функция Set View Target With Blend в Unreal Engine (UE5, UE4)
Blueprint-функция Set View Target With Blend в Unreal Engine (UE5, UE4)

Функция Set View Target With Blend в Unreal Engine используется для плавного переключения камеры игрока между разными целями (View Targets) с возможностью задать время и стиль перехода. Иначе говоря, функция позволяет произвести переход от одной камеры к другой с настройкой плавности этого перехода, создавая кинематографические движения камеры.

Являясь частью класса Player Controller, функция Set View Target With Blend меняет камеру путём смены у этого контроллера текущей цели просмотра (View Target) на новый Актор (например, Camera Actor или Character). При этом доступ к функции можно получить либо внутри самого класса контроллера игрока, либо же в любом другом классе, но только из ссылки на Player Controller.

На практике функцию Set View Target With Blend используют для перехода между разными камерами при создании различных игровых механик, например, при реализации:

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

Параметры функции Set View Target With Blend

  • Target (Player Controller) — контроллер игрока, для которого необходимо произвести смену камеры.
  • New view Target (Actor) — новый Актор, который необходимо установить в качестве цели для просмотра (новой камеры). Обычно это Camera Actor, но может быть и любой другой Актор с компонентом Camera Component (например, персонаж игрока).
  • Blend Time (float) — время, необходимое для перехода от текущего вида к новому (в секундах). Установите значение 0 для мгновенного перехода.
  • Blend Func (enum) — математическая функция интерполяции, используемая для перехода между камерами. Управляет тем, как скорость перехода меняется со временем. Доступны следующие варианты функции:
    Linear (линейная интерполяция, переход происходит с постоянной скоростью);
    Cubic (кубическая интерполяция, обеспечивает более плавное ускорение и замедление в начале и конце перехода);
    Ease In (медленный старт, затем ускорение. Кривая ускорения регулируется параметром Blend Exp);
    Ease Out (быстрый старт, затем замедление. Кривая ускорения регулируется параметром Blend Exp);
    Ease In Out (плавное ускорение в начале и плавное замедление в конце. Кривая ускорения регулируется параметром Blend Exp);
    Pre Blended (функция плавного перехода не производит, просто переключая камеру с одной на другую).
  • Blend Exp (float) — экспонента, используемая некоторыми функциями наложения из параметра Blend Func для управления формой кривой. Более высокие значения создают более выраженные и сильные эффекты перехода.
  • Lock Outgoing (bool) — блокировать ли исходный View Target на последнем кадре для плавности (это не позволит исходной камере продолжать двигаться во время перехода).

Практический урок в Unreal Engine. Функция Set View Target With Blend: смена камеры от 3-го лица на статичную и обратно

Цель данной практики — посмотреть как работает функция Set View Target With Blend и произвести при помощи неё смену камеры от 3-го лица на статичную и обратно.

Для текущей практики мы воспользуемся стандартным шаблоном игры от третьего лица движка Unreal Engine (UE5).

Camera Actor

Создадим отдельный Camera Actor и добавим к нему коллизию для взаимодействия с персонажем, войдя в которую камера персонажа должна будет смениться на статичную, а при выходе возвратится обратно.

  1. Через контекстное меню Content Browser / Blueprint Class в окне Pick Parent Class создадим Актор класса Camera Actor с именем BP_CameraActor.
В окне Pick Parent Class создадим Актор класса Camera Actor
В окне Pick Parent Class создадим Актор класса Camera Actor
  1. Добавим к этому Актору компонент Box Collision, прикрепив его к родительскому Scene Component, и увеличим размеры Box через параметр Box Extent (470, 470, 490).
  2. Передвинем Box так, чтобы камера оказалась сверху коробки коллизии и по середине одной из сторон, изменив параметр Location (340, 50, -400).
Компонент Box Collision, его размеры и положение
Компонент Box Collision, его размеры и положение
  1. Разместим Актор BP_CameraActor на игровом уровне.
Разместим Актор BP_CameraActor на игровом уровне
Разместим Актор BP_CameraActor на игровом уровне

Настройки камеры

Изменим некоторые параметры компонента Camera Component внутри BP_CameraActor так, чтобы эти параметры совпадали с параметрами камеры от третьего лица FollowCamera в персонаже BP_ThirdPersonCharacter.

  1. Выключим параметр Camera Options / Constrain Aspect Ratio (ограничить соотношение сторон).
  2. Включим параметр Camera Options / Override Aspect Ratio Axis Constraint (переопределить ограничения оси соотношения сторон).
  3. А также развернём саму камеру немного вниз, изменив параметр Rotation (0, -20, 0), чтобы она смотрела немного сверху вниз под небольшим углом.
Изменим некоторые параметры компонента Camera Component внутри BP_CameraActor
Изменим некоторые параметры компонента Camera Component внутри BP_CameraActor

Begin Overlap Box Collision

Перейдем во вкладку Event Graph Актора BP_CameraActor и настроим смену с камеры персонажа на статичную камеру при пересечении персонажем игрока коллизии Box Collision.

  1. Через контекстное меню компонента Box Collision / Add Event добавим событие Add On Component Begin Overlap. Данное событие будет вызываться при пересечении любым Актором коллизии Box Collision.
  2. Отфильтруем пересечения любых Акторов на пересечение только с классом Character игрока. Для этого сравним значение параметра Other Actor события Begin Overlap, в котором возвращается Актор, пересёкший компонент коллизии, со значением, возвращаемым функцией Get Player Character, которая возвращает объект Character для текущего игрока. И если пересёкший коллизию Актор действительно является игроком, продолжим процесс далее.
Добавим событие Add On Component Begin Overlap и отфильтруем пересечения любых Акторов на пересечение только с классом Character игрока
Добавим событие Add On Component Begin Overlap и отфильтруем пересечения любых Акторов на пересечение только с классом Character игрока
  1. После произведём для текущего контроллера игрока смену камеры функцией Set View Target With Blend, где в качестве цели Target (контроллер, для которого нужно изменить камеру) укажем текущий контроллер, возвращаемый функцией Get Player Controller, и в качестве новой камеры в параметре New View Target укажем текущий Актор нашей статичной камеры BP_CameraActor. Но так как мы находимся внутри этого же Актора, чтобы в параметре указать его самого, воспользуемся нодой Get a reference to Self.
  2. Также в параметре Blent Time (время смешивания) функции Set View Target With Blend укажем 1 секунду и в качестве функции смешивания Blend Func укажем VTBlend Cubic.

Скриншот

Практический урок в Unreal Engine. Функция Set View Target With Blend: смена камеры от 3-го лица на статичную
Практический урок в Unreal Engine. Функция Set View Target With Blend: смена камеры от 3-го лица на статичную

Код на BlueprintUE

Если код отображается без связей, нажмите сверху кода на кнопку «Graph» Если код отображается без связей, нажмите сверху кода на кнопку "Graph"


End Overlap Box Collision

Осталось только настроить обратную смену камеры при выходе из коллизии Box Collision. Код будет полностью таким же, кроме пары моментов.

  1. В качестве события разместим Add On Component End Overlap.
  2. И в качестве новой камеры в параметре New View Target функции Set View Target With Blend укажем Актор самого персонажа, внутри которого находится компонент Camera Component для камеры от третьего лица. Данный Актор возвратит нам функция Get Player Character.

Скриншот

Практический урок в Unreal Engine. Функция Set View Target With Blend: смена статичной камеры на камеру от 3-го лица
Практический урок в Unreal Engine. Функция Set View Target With Blend: смена статичной камеры на камеру от 3-го лица

Код на BlueprintUE

Если код отображается без связей, нажмите сверху кода на кнопку «Graph» Если код отображается без связей, нажмите сверху кода на кнопку "Graph"


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


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

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

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