Приветствую, друзья, с Вами Будуев Антон. В данной статье мы разберём большинство Blueprint-функций вращения и поворота (Rotation / Rotator), доступных в Unreal Engine (UE4, UE5).
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Unreal Engine Rotation
Rotation, или, по-другому, вращение (поворот), – это фундаментальный аспект работы с 3D-миром в Unreal Engine. Rotation играет ключевую роль в создании игровых механик, анимаций, управления и описывается с помощью структуры Rotator, которая представляет поворот вокруг трех осей: X, Y и Z.
Rotator (ротатор) — это структура, представляющая вращение объекта в трёхмерном пространстве. Она состоит из трёх значений, описывающих углы, выраженных в градусах:
— Roll: поворот вокруг оси X (крен).
— Pitch: поворот вокруг оси Y (наклон вверх/вниз).
— Yaw: поворот вокруг оси Z (поворот влево/вправо).Но! На самом деле движок Unreal Engine внутри самого себя для представления вращения использует Quaternions (кватернионы). Они более эффективны и предотвращают проблемы с блокировкой осей углов Эйлера.
Rotator — это просто удобный способ представить вращение для пользователей, который затем преобразуется движком в Quaternion для внутренних расчётов.
Функции Rotation применяются, например, для управления персонажами (настройка ориентации игрока или врагов), создания стрельбы (определение направления выстрела), анимации (создание плавных движений конечностей или деталей механизмов), поворота камеры, создания динамических эффектов, таких как вращение объектов или частиц и так далее.
Также, при работе с вращением в Анрил Энджин очень важно понимать концепцию трёх координатных систем.
Всего в Unreal Engine для любого объекта доступно 3 системы координат:
- мировая,
- относительная (родительская),
- локальная.
На рисунке ниже представлены 2 Актора. Зелёный Актор — постамент для персонажа. И второй Актор — схематичный персонаж. Причём персонаж подсоединён к Актору постамента как дочерний элемент. Так вот, если рассматривать ситуацию с точки зрения Актора персонажа, то у него будут 3 системы координат: локальная — это его собственные оси, относительная — оси его родителя и мировая — оси игрового мира.

Таким образом, работа с Rotation в Unreal Engine возможна по всем трём координатным системам. Например, задавая вращение по оси Z в любой из координатных систем, мы получим совершенно разный поворот объекта.
Функции для работы с Rotation в Unreal Engine
Scene Component Rotation
Функции поворота компонента, доступные в классе Scene Component и других производных от него классах.
- Get World Rotation — возвращает текущее направление вращения компонента относительно глобальной системы координат.
- Set World Rotation — устанавливает новое направление вращения компонента в мировых координатах.
- Set Relative Rotation — устанавливает поворот компонента относительно родительских координат.
- Add Relative Rotation — добавляет вращение компоненту относительно системы координат его родителя.
- Add World Rotation — добавляет вращение компоненту в рамках мировой системы координат.
- Add Local Rotation — добавляет вращение компоненту в рамках локальной системы координат самого компонента.
Actor Rotation
Функции поворота объекта, доступные в классе Actor и других производных от него классах.
- Get Actor Rotation — возвращает для Актора текущие значения поворота в пространстве мира
- Set Actor Rotation — устанавливает новое значение поворота Актора в мировой системе координат.
- Set Actor Relative Rotation — устанавливает новое значение поворота Актора относительно родительских координат.
- Add Actor World Rotation — добавляет дельту вращения к текущему повороту Актора в мировых координатах.
- Add Actor Local Rotation — добавляет дельту вращения к текущему повороту Актора в локальных координатах самого Актора.
Pawn / Controller
Функции поворота объекта, доступные в классах Pawn / Controller и других производных от них классах.
- Get Last Update Rotation — возвращает для объекта Character, управляемого компонентом Character Movement Component, вращение (Rotator), которое было применено во время последнего обновления его положения.
- Get Base Rotation Offset — возвращает базовое смещение поворота компонента Mesh относительно поворота родительской капсулы Capsule Component в персонаже Character.
- Get Base Aim Rotation — возвращает базовое вращение для «взгляда» объекта Pawn (Aim, прицеливания). Если Pawn управляется ИИ, то в качестве взгляда имеется в виду поворот самого Pawn, если управляется игроком, то под взглядом понимается поворот камеры игрока.
- Get Control Rotation (Pawn) — возвращает вращение контроллера, который управляет текущим Pawn.
- Get Control Rotation (Controller) — возвращает вращение контроллера.
- Get Desired Rotation — возвращает желаемое вращение целевого Pawn, что по сути равно вращению контроллера.
- Set Control Rotation — устанавливает новое значение вращения контроллера.
- Set Initial Location and Rotation — устанавливает начальное месторасположение и вращение контроллера. Обычно используется при инициализации / первом создании контроллера.
- Is Valid AI Rotation — проверяет, является ли Rotator (вращение) допустимым для использования в контексте искусственного интеллекта (AI). Функция учитывает различные факторы, такие как ограничения на вращение, допустимые диапазоны углов и возможные проблемы с представлением углов.
Rotator
- Combine Rotators — объединяет значения двух поворотов Rotator (сначала применяется первый поворот, а затем уже второй) и возвращает итоговый результирующий поворот.
- Delta (Rotator) — рассчитывает и возвращает нормализованное значение нового Rotator, равного разнице ротаторов A и B, в которой каждый угол нормализован в диапазоне от -180 до +180.
- Get Axes — возвращает для текущего вращения векторы направления локальных осей X, Y и Z в системе мировых координат.
- Get Rotation X Vector — возвращает для текущего вращения вектор направления локальной оси X в системе мировых координат.
- Invert Rotator — возвращает инвертированный Rotator, обратный (противоположный) к заданному.
- Rotate Vector — поворачивает вектор на заданное вращение, изменяя его направление, но не его величину (длину).
- Unrotate Vector — поворачивает вектор в противоположном направлении от заданного Rotator’а.
- Rotator from Axis and Angle — возвращает значение нового Rotator, рассчитанного от заданной оси и предоставленного угла в градусах. Позволяет определить вращение, указав вокруг какой оси и на какой угол нужно повернуть объект.
- Select Rotator — выбирает один из двух Rotator’ов на основе логического условия (boolean).
- Random Rotator — генерирует случайный поворот с опциональным случайным креном (Roll).
Find Rotator
- Find Look at Rotation — вычисляет и возвращает вращение объекта, смотрящего на определенную точку в пространстве.
- Find Relative Look at Rotation — вычисляет и возвращает относительное вращение объекта (-180 до 180 градусов), смотрящего на определенную точку в пространстве.
Interpolation Rotator
- RInterp To — возвращает новое значение вращения, которое находится между текущим вращением и целевым вращением, основываясь на заданной скорости интерполяции. Обеспечивает плавный интерполированный переход от текущего Rotator до целевого Rotator с течением времени.
- RInterp To Constant — возвращает новое значение вращения, которое находится между текущим вращением и целевым вращением, основываясь на заданной линейной скорости интерполяции. Обеспечивает линейный интерполированный переход от текущего Rotator до целевого Rotator с течением времени.
- Lerp (Rotator) — возвращает новый Rotator, который находится между двумя заданными вращениями, в зависимости от заданного коэффициента Alpha. При Alpha = 0.0 возвращает ротатор A, при 1.0 возвращает B, при 0.5 возвращает среднее между A и B. Важно, что, в отличие от RInterp To, текущая функция не выполняет плавную интерполяцию во времени.
Break Rotator
- Break Rot Into Axes — разделяет Rotator на три отдельные составные оси, выраженные в векторах X, Y и Z.
- Break Rotator — разделяет Rotator на три отдельных составных угла X (Roll), Y (Pitch), Z (Yaw).
Make Rotator
- Make Rot from X — создаёт на основе одного указанного вектора, представляющего ось X, новый Rotator, у которого ось X ориентируется на указанный вектор.
- Make Rot from XY — создаёт на основе двух указанных векторов, представляющих оси X и Y, новый Rotator, у которого оси X и Y ориентируются на соответствующие указанные вектора, при чём ось X будет точно повторять указанный вектор, а ось Y может быть немного изменена для соблюдения перпендикулярности.
- Make Rot from XZ — создаёт на основе двух указанных векторов, представляющих оси X и Z, новый Rotator, у которого оси X и Z ориентируются на соответствующие указанные вектора, при чём ось X будет точно повторять указанный вектор, а ось Z может быть немного изменена для соблюдения перпендикулярности.
- Make Rot from Y — создаёт на основе одного указанного вектора, представляющего ось Y, новый Rotator, у которого ось Y ориентируется на указанный вектор.
- Make Rot from YX — создаёт на основе двух указанных векторов, представляющих оси Y и X, новый Rotator, у которого оси Y и X ориентируются на соответствующие указанные вектора, при чём ось Y будет точно повторять указанный вектор, а ось X может быть немного изменена для соблюдения перпендикулярности.
- Make Rot from YZ — создаёт на основе двух указанных векторов, представляющих оси Y и Z, новый Rotator, у которого оси Y и Z ориентируются на соответствующие указанные вектора, при чём ось Y будет точно повторять указанный вектор, а ось Z может быть немного изменена для соблюдения перпендикулярности.
- Make Rot from Z — создаёт на основе одного указанного вектора, представляющего ось Z, новый Rotator, у которого ось Z ориентируется на указанный вектор.
- Make Rot from ZX — создаёт на основе двух указанных векторов, представляющих оси Z и X, новый Rotator, у которого оси Z и X ориентируются на соответствующие указанные вектора, при чём ось Z будет точно повторять указанный вектор, а ось X может быть немного изменена для соблюдения перпендикулярности.
- Make Rot from ZY — создаёт на основе двух указанных векторов, представляющих оси Z и Y, новый Rotator, у которого оси Z и Y ориентируются на соответствующие указанные вектора, при чём ось Z будет точно повторять указанный вектор, а ось Y может быть немного изменена для соблюдения перпендикулярности.
- Make Rotation from Axes — создаёт на основе трёх векторов, представляющих оси X, Y, Z, новый Rotator, у которого все оси будут ориентироваться на соответствующие указанные вектора.
- Make Rotator — создаёт Rotator на основе трех скалярных значений: Roll, Pitch и Yaw, представляющих градусы для углов вращения вокруг соответствующих осей X, Y и Z.
String Rotator
- Build String (Rotator) — преобразует Rotator в строку в формате: строка Append To + строка Prefix + значение Rotator + строка Suffix.
- String To Rotator — преобразует строку в Rotator. Возвращает вращение и значение True, если преобразование прошло успешно, в противном случае — False.
- To String (Rotator) — преобразует Rotator в строку формата «P = , Y = , R = ».
- To Text (Rotator) — преобразует Rotator в локализованный текст формата «P = , Y = , R = ».
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.