Blueprint-функция Set Actor Relative Rotation в Unreal Engine

Приветствую, друзья, с Вами Будуев Антон. В данной статье мы разберем Blueprint-функцию, устанавливающую новое значение вращения Актора в относительных координатах, а именно функцию Set Actor Relative Rotation в Unreal Engine (UE4, UE5).

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

Set Actor Relative Rotation в Unreal Engine

Функция Set Actor Relative Rotation в Unreal Engine
Функция Set Actor Relative Rotation в Unreal Engine

Функция Set Actor Relative Rotation в Unreal Engine используется для установки вращения Актора относительно его родительского объекта, изменяя поворот Актора по осям X, Y и Z в относительной системе координат его родителя. Фактически же функция устанавливает новый относительный поворот для Root Component этого Актора (его корневого компонента).

Функция доступна для блюпринтов класса Actor (или его производного класса) и используется в том случае, когда Актор присоединён к другому объекту в качестве дочернего и при этом необходимо точно проконтролировать его поворот относительно родительского элемента. Например, при создании механизмов, где детали должны быть повернуты относительно основного объекта (поворот двери вокруг петель). При анимации частей персонажей, зависящих от самого персонажа или тогда, когда Актор был присоединён к другому функцией Attach Actor To Actor.

Если же Актор не прикреплён ни к какому родителю, то функция Set Actor Relative Rotation всё равно будет изменять поворот Актора, но уже относительно самого мира, так как Актор, находясь просто в мировых координатах, является дочерним относительно самого игрового мира.

Относительная система координат

Как уже говорилось выше, Set Actor Relative Rotation в Анрил Энджин устанавливает новое относительное вращение Актора в рамках родительской системы координат. Но что это значит, относительная система координат?

Всего в Unreal Engine для любого Актора доступно 3 системы координат:

  • мировая,
  • относительная (родительская),
  • локальная.

На рисунке ниже представлены 2 Актора. Зелёный Актор — постамент для персонажа. И второй Актор — схематичный персонаж. Причём персонаж подсоединён к Актору постамента как дочерний элемент. Так вот, если рассматривать ситуацию с точки зрения Актора персонажа, то у него будут 3 системы координат: локальная — это его собственные оси, относительная — оси его родителя и мировая — оси игрового мира.

Мировая (World), относительная (Relative) и локальная (Local) системы координат в Unreal Engine (UE4, UE5)
Мировая (World), относительная (Relative) и локальная (Local) системы координат в Unreal Engine (UE4, UE5)

Исходя из рисунка выше, для Актора персонажа функция Set Actor Relative Rotation будет устанавливать новый поворот относительно его родителя — Актора-постамента, выравнивая персонажа по осям X, Y, Z постамента.

Параметры функции Set Actor Relative Rotation

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

Rotator (ротатор) — это структура, описывающая вращение объекта в трёхмерном пространстве. Она состоит из трёх значений:
— Roll: поворот вокруг оси X (крен).
— Pitch: поворот вокруг оси Y (наклон вверх/вниз).
— Yaw: поворот вокруг оси Z (поворот влево/вправо).

Другие функции изменения вращения Актора

В Unreal Engine имеются и другие Blueprint-функции, предназначенные для изменения вращения Актора. Давайте кратко обсудим, чем они друг от друга отличаются.

  • Add Actor World Rotation — добавляет дельту вращения к текущему повороту Актора в мировых координатах.
  • Add Actor Local Rotation — добавляет дельту вращения к текущему повороту Актора в локальных координатах самого Актора.
  • Set Actor Rotation — устанавливает новое значение поворота Актора в мировой системе координат.

Ну и текущая функция Set Actor Relative Rotation — устанавливает поворот Актора относительно родительских координат.

Практический урок в Unreal Engine

В данном небольшом практическом уроке реализуем вращение Актора (схематичного персонажа из рисунка выше, который является дочерним от Актора постамента) при помощи вызова функции Set Actor Relative Rotation, выровняв персонажа относительно постамента при старте игры.

  1. Создадим Blueprint класса Actor с именем BP_Actor для постамента. Добавим ему компонет Cube (для наглядности я его покрасил в зелёный цвет) и уменьшим ему масштаб по оси Z.
  2. Создадим второй Blueprint класса Actor с именем BP_Character для схематичного персонажа. Добавим ему компонент Cube для тела персонажа, и компонент Cube 1 — для рук. Причём Cube 1 сделаем дочерним элементом для Cube и трансформируем его соответствующим образом, чтобы он напоминал руки.
  3. Разместим BP_Actor в игровом мире и добавим ему поворот по оси X на —30 градусов, тем самым развернув его собственную локальную систему координат.
  4. Разместим BP_Character в игровом мире и добавим его в качестве дочернего элемента к Актору BP_Actor. Для этого перейдём в окно Outliner и просто перетащим мышкой BP_Character на BP_Actor. Далее выделим BP_Character и добавим ему абсолютно любой поворот относительно его родительского элемента.
Разместим BP_Character в игровом мире и добавим его в качестве дочернего элемента к Актору BP_Actor
Разместим BP_Character в игровом мире и добавим его в качестве дочернего элемента к Актору BP_Actor

Таким образом, дочерний Актор персонажа будет иметь некий поворот относительно родителя. Теперь же, при помощи Blueprint-кода, необходимо при старте игры выровнять оба объекта.

И, на самом деле, код будет совсем простым — во вкладке Event Graph блюпринта BP_Character по событию Event Begin Play разместим функцию Set Actor Relative Rotation. Ротатор в параметре New Relative Rotation оставим неизменным (0.0, 0.0, 0.0).

Таким образом, несмотря на то, что Актор персонажа изначально имеет некий поворот, функция Set Actor Relative Rotation при старте игры выровняет его относительно постамента, установив для него вращение (0.0, 0.0, 0.0) по осям X, Y, Z родительской системы координат.

Практический урок в Unreal Engine: устанавливаем новое вращение Актора в рамках относительной родительской системы координат при помощи функции Set Actor Relative Rotation
Практический урок в Unreal Engine: устанавливаем новое вращение Актора в рамках относительной родительской системы координат при помощи функции Set Actor Relative Rotation

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

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

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