Друзья, приветствую, с Вами Будуев Антон. В данной статье мы рассмотрим 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 добавляет смещение к текущей мировой позиции объекта класса 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 в Анрил Энджин добавляет смещение к текущей локальной позиции объекта Actor (или его производного класса), позволяя ему перемещаться в рамках своей внутренней системы координат (внутренних осей X, Y и Z самого Актора).
Это означает, что функция перемещает Актор, добавляя смещение, заданное вектором Delta Location, к текущей локальной позиции, а не к мировым координатам или координатам относительно родительского объекта.
Add Actor Local Offset служит для придания Актору плавного движения в рамках локальной системы координат. Это особенно полезно, когда объект находится в повернутом положении в мировых координатах, и его необходимо переместить одновременно по двум осям — Z и Y (вверх и вбок). В таком случае проще обеспечить движение только по одной оси, а именно по внутренней оси Y.

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

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