Приветствую, друзья, с Вами Будуев Антон. В данной статье мы разберем Blueprint-функции изменения угла поворота компонента в мировых координатах, а именно функции Get World Rotation и Set World Rotation в Unreal Engine (UE4, UE5).
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Get World Rotation в Unreal Engine

Функция Get World Rotation в Unreal Engine используется для получения текущего направления вращения компонента относительно глобальной системы координат, в которой располагаются все объекты в игре. Она возвращает значение типа Rotator, представляющее собой углы поворота компонента вокруг каждой из трех осей (X, Y и Z) в мировых координатах.
Функция доступна для компонентов Scene Component (или его производного класса).
Get World Rotation часто используется при работе с физикой, анимацией, камерами, управлением персонажами или любыми другими случаями, где нужно знать ориентацию объекта в пространстве. Например, зная вращение объекта, можно определить, в каком направлении он смотрит или движется, также можно использовать вращение одного объекта, чтобы выровнять другой объект.
Параметры:
- Target (Scene Component, по умолчанию Self) — текущий компонент, для которого необходимо получить значение вращения.
- Return Value (rotator) — возвращаемый параметр. Возвращает углы поворота компонента вокруг каждой из трех осей (X, Y и Z) в мировых координатах.
Rotator (ротатор) — это структура, описывающая вращение объекта в трёхмерном пространстве. Она состоит из трёх значений:
— Roll: поворот вокруг оси X (крен).
— Pitch: поворот вокруг оси Y (наклон вверх/вниз).
— Yaw: поворот вокруг оси Z (поворот влево/вправо).
На примере ниже функция Get World Rotation возвращает для компонента куба Rotator (0.0, 0.0, -30.0) в мировых координатах, так как куб повёрнут по оси X (Roll) на -30 градусов относительно мировой системы координат.

Set World Rotation

Функция Set World Rotation в Unreal Engine используется для установки нового направления вращения компонента в мировых координатах. Она позволяет изменить ориентацию объекта компонента в пространстве, задав новые углы поворота вокруг осей X (Roll), Y (Pitch) и Z (Yaw) в системе мировых координат. При этом также изменяя значения вращения в системе координат относительно родительского элемента, чтобы в итоге компонент занял нужное вращение в мировых координатах.
Функция доступна для компонентов Scene Component (или его производного класса).
Set World Rotation используется для поворота объектов (дверей, платформ), управления ориентацией персонажа, создания вращающихся элементов (лопастей, шестеренок), совмещения вращения одного объекта с вращением другого и так далее.
Параметры:
- Target (Scene Component, по умолчанию Self) — текущий компонент, для которого необходимо установить новое значение вращения.
- New 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.
В Unreal Engine имеются и другие функции, изменяющие поворот компонента. Чем же отличается от них функция Set World Rotation?
Add Local Rotation — добавляет к значениям текущего вращения компонента дополнительные значения вращения в рамках собственной локальной системы координат компонента.
Add Relative Rotation — добавляет к значениям текущего вращения компонента дополнительные значения вращения в рамках относительной системы координат родительского элемента этого компонента.
Add World Rotation — добавляет к значениям текущего вращения компонента дополнительные значения вращения в рамках мировой системы координат.Set World Rotation (текущая, рассматриваемая в этой статье функция) — полностью изменяет вращение на новое значение вращения в рамках мировой системы координат.
Практический урок в Unreal Engine: создаём вращение компонента куба с помощью функций Get World Rotation и Set World Rotation
- Создадим Blueprint класса Actor с именем BP_Actor.
- Добавим ему компонент Cube.
- Разместим BP_Actor в игровом мире и добавим поворот компоненту куба по оси X на —30 градусов, тем самым развернув его собственную локальную систему координат.
- Для вращения куба в мировых координатах, во вкладке Event Graph блюпринта BP_Actor по событию Event Tick разместим функцию Set World Rotation, в параметр Target которой, нодой Get Cube подадим ссылку на компонент куба.
- Вращение компонента куба будем осуществлять только вокруг оси Z. Соответственно, по осям X и Y вращение должно оставаться неизменным. Поэтому через правую кнопку мыши (меню Split Struct Pin) разделим параметр New Rotation в Set World Rotation на 3 отдельных float-значения. В X и Y подадим текущие значения поворота, которые возвратит функция Get World Rotation (для неё также применим Split Struct Pin), а значение по Z мы изменим, добавив дельту.
- Чтобы сделать вращение независимым от частоты кадров (FPS) при использовании события Event Tick, необходимо учесть дельту секунд (Delta Seconds). Для этого в текущем blueprint создадим новую переменную скорости Speed, тип которой будет float, и зададим ей значение по умолчанию 200. Затем умножим значение Speed на Delta Seconds, что позволит нам получить дельту, которую мы будем прибавлять к текущему значению угла поворота по оси Z.
- Получившееся новое значение угла поворота по оси Z перенаправим в New Rotation Z (Yaw) функции Set World Rotation.
Таким образом, мы получим вращение компонента куба вокруг оси Z мировой системы координат, где ось Z направлена строго вертикально (снизу вверх). И это несмотря на то, что сам куб и его внутренняя система координат развёрнуты (его собственная ось Z наклонена).
Скриншот

Код на BlueprintUE

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