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

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

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

Add World Offset

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

В Unreal Engine функция Add World Offset служит для изменения положения компонента (Scene Component или его производного класса) в мировом пространстве. Она добавляет смещение к текущей мировой позиции компонента, по сути, добавляя вектор смещения к его текущим мировым координатам.

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

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

Основное назначение Add World Offset заключается в обеспечении простого и плавного перемещения компонента в мировом пространстве.

Параметры:

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

Add Local Offset

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

Функция Add Local Offset в Unreal Engine служит для перемещения компонента (Scene Component или его производного класса) в его собственном локальном пространстве. Это пространство определяется внутренними осями X, Y и Z самого компонента. Функция добавляет смещение к текущей позиции компонента, позволяя ему перемещаться в рамках своей внутренней системы координат.

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

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

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

Также, как и любая другая функция подобного класса, она может учитывать столкновения во время перемещения, останавливая движение компонента и предоставляя информацию о всех обнаруженных препятствиях.

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

Часто функцию Add Local Offset путают с функцией Add Relative Location, которая добавляет вектор относительно родителя.

В целом, для компонентов имеются 3 функции смещения и каждая из них предназначена для смещения в конкретной системе координат:

  • Add World Offset — добавляет смещение в рамках мировой системы координат.
  • Add Local Offset — добавляет смещение в рамках локальной системы координат.
  • Add Relative Location — добавляет смещение относительно родительской системы координат.

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

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

Скриншот

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

Код на BlueprintUE

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


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

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

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