Blueprint-функции Add Actor World Offset и Add Actor Local Offset в Unreal Engine

Друзья, приветствую, с Вами Будуев Антон. В данной статье мы рассмотрим Blueprint-функции смещения объектов класса Actor в Unreal Engine (UE4, UE5), а именно: Add Actor World Offset и Add Actor Local Offset.

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

Add Actor World Offset

Функция Add Actor World Offset в Unreal Engine
Функция Add Actor World Offset в Unreal Engine

Функция Add Actor World Offset в Unreal Engine добавляет смещение к текущей мировой позиции объекта класса Actor (или его производного Blueprint-класса). Используется она главным образом для создания плавных динамических движений, например, таких как упрощённое перемещение персонажей.

В отличие от функции Set Actor Location, которая полностью заменяет текущую позицию Актора, Add Actor World Offset позволяет изменить позицию Актора путем прибавления указанного вектора к его текущей мировой позиции. А если быть более точным, то добавление вектора смещения производится для Root Component этого Актора (его корневого компонента).

Также функция может отслеживать столкновения во время движения (sweeping), останавливая передвижение объекта и предоставляя информацию об обнаруженном столкновении.

Обратите внимание! Для того чтобы функция Add Actor World Offset могла отслеживать столкновения (sweeping), в качестве корневого компонента этого Актора должен быть компонент, который содержит коллизию. Если же в качестве корневого компонента используется компонент по умолчанию Default Scene Root, то функция отслеживать столкновения попросту не будет.

Это связано с тем, что Add Actor World Offset на самом деле работает не с Актором, а с его корневым компонентом. Соответственно, если в корневом компоненте отсутствует примитив коллизии, то столкновения учитываться не будут.

Параметры:

  • Target (Actor, по умолчанию Self) — текущий Актор, для которого необходимо добавить смещение.
  • Delta Location (vector, по умолчанию X 0,0; Y 0,0; Z 0,0) — вектор, представляющий смещение, на которое необходимо переместить объект Актора.
  • Sweep (bool, по умолчанию False) — необязательный параметр, который можно использовать для проверки столкновений при перемещении Актора. Если установлено значение True, то перемещение будет происходить с учетом столкновений с другими объектами. В случае возникновения такого события, перемещение остановится, а информация о столкновении будет возвращена в параметре Sweep Hit Result. При значении False столкновения текущего Актора с любыми объектами будут проигнорированы. Важно! Чтобы параметр работал, необходимо в качестве корневого компонента использовать не стандартный Default Scene Root, а другой компонент, имеющий коллизию.
  • Teleport (bool, по умолчанию False) — параметр, определяющий, как будет перемещаться физика Актора. При значении True физика телепортируется в новые координаты в том же состоянии, в каком она была до перемещения Актора. При значении False физика будет обрабатывать само перемещение, из-за чего (при быстром перемещении) могут возникнуть артефакты физики (неправильные, нереалистичные расчёты).
  • Sweep Hit Result (structure) — возвращаемый параметр. Структура, возвращающая результаты столкновения Актора с другим объектом при включенной опции Sweep. Так как структура сложная, её можно разделить нодой Break Hit Result.

Add Actor Local Offset

Функция Add Actor Local Offset в Unreal Engine
Функция Add Actor Local Offset в Unreal Engine

Функция Add Actor Local Offset в Анрил Энджин добавляет смещение к текущей локальной позиции объекта Actor (или его производного класса), позволяя ему перемещаться в рамках своей внутренней системы координат (внутренних осей XY и Z самого Актора).

Это означает, что функция перемещает Актор, добавляя смещение, заданное вектором Delta Location, к текущей локальной позиции, а не к мировым координатам или координатам относительно родительского объекта.

Add Actor Local Offset служит для придания Актору плавного движения в рамках локальной системы координат. Это особенно полезно, когда объект находится в повернутом положении в мировых координатах, и его необходимо переместить одновременно по двум осям — Z и Y (вверх и вбок). В таком случае проще обеспечить движение только по одной оси, а именно по внутренней оси Y.

Функция Add Actor Local Offset в Unreal Engine перемещает Актор, добавляя смещение относительно его внутренних локальных координат
Функция Add Actor Local Offset в Unreal Engine перемещает Актор, добавляя смещение относительно его внутренних локальных координат

Разбирать параметры данной функции мы не будем, так как они полностью соответствуют тем, которые мы уже рассматривали для функции выше.

Практический урок в Unreal Engine: создаём движение Актора функцией Add Actor World Offset

  1. Создадим Blueprint класса Actor с именем BP_Actor.
  2. Добавим ему компонент Cube.
  3. Для того чтобы можно было учитывать столкновения при передвижении, установим компонент Cube в качестве корневого. Для этого кликнем по нему мышкой и, не отпуская, перенесём на место Default Scene Root.
  4. Во вкладке Event Graph по событию Event Tick разместим функцию Add Actor World Offset.
  5. Движение Актора будет осуществляться только в направлении оси X. Чтобы сделать его независимым от частоты кадров (FPS) при использовании события Event Tick, необходимо учесть дельту секунд (Delta Seconds). Для этого в текущем blueprint создадим новую переменную скорости Speed, тип которой будет float, и зададим ей значение по умолчанию 200. Затем умножим значение Speed на Delta Seconds, что позволит нам получить дельту, которую мы будем прибавлять к текущим координатам Актора по оси X на каждом кадре обновления игры.
  6. Установим параметр Sweep функции Add Actor World Offset в значение True, чтобы Актор при движении учитывал столкновения с другими объектами.

Скриншот

Практический урок в Unreal Engine: создаём движение Актора функцией Add Actor World Offset
Практический урок в Unreal Engine: создаём движение Актора функцией Add Actor World Offset

Код на BlueprintUE

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


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

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

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