Компонент Spring Arm в Unreal Engine

Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим компонент Spring Arm, отвечающий в Unreal Engine (UE5, UE4) за удержание камеры на заданном расстоянии и автоматической обработкой коллизий. Разберём настройки данного компонента, а также произведём некоторые настройки на практике.

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

Spring Arm

Spring Arm Component (пружинный рычаг) в Unreal Engine — это компонент, который используется для удержания дочерних объектов (обычно камеры) на заданном расстоянии от родительского объекта с автоматическим управлением столкновениями и плавным движением.

В процессе игры он не визуализируется, а в режиме редактора Unreal Editor отображается линией красного цвета.

Spring Arm Component (компонент пружинного рычага) в Unreal Engine (UE5, UE4)
Spring Arm Component (компонент пружинного рычага) в Unreal Engine (UE5, UE4)

В большинстве случаев Spring Arm используется для прикрепления камер к персонажам или транспортным средствам от третьего лица, обеспечивая плавное слежение и предотвращая прохождение камеры сквозь стены и другие объекты. Хотя это не устранит все случаи, когда камера проходит сквозь объекты на игровом уровне, в зависимости от настроек Spring Arm, компонент поможет уменьшить их количество, автоматически перемещая камеру, когда она сталкивается с препятствием, а затем возвращая её в исходное положение, когда препятствие устранено.

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

В шаблоне проекта игры от третьего лица в Unreal Engine (UE5) в персонаже BP_ThirdPersonCharacter компонент Spring Arm имеет название Camera Boom (штанга камеры).

Основные функции и особенности Spring Arm:

  • регулируемая длина рычага — позволяет изменять расстояние между основанием и прикреплённым компонентом;
  • обнаружение столкновений — предотвращает прохождение прикреплённого компонента сквозь стены и объекты, автоматически сокращая длину «рычага»;
  • задержка камеры — позволяет включить задержку движения и/или поворота камеры, что создаёт эффект плавного следования камеры за персонажем, делая движение менее резким и более естественным;
  • управление поворотом — даёт возможность наследовать вращение по осям Pitch, Yaw, Roll от родителя или использовать поворот контроллера;
  • прикрепление к сокетам — пружинный рычаг можно привязать к определённому сокету Меша, что удобно для камер, следующих за конкретными частями тела персонажа;
  • смещение гнезда — позволяет точно настроить положение прикреплённого компонента относительно конца пружинного рычага.

Настройки Spring Arm Component во вкладке Details

Так как Spring Arm Component является дочерним от класса Scene Component, то многие настройки вкладки Details также были унаследованы от компонента сцены. Соответственно, чтобы не повторяться, в этой статье рассмотрим только дополнительные настройки, относящиеся к Spring Arm.

Остальные повторяющиеся настройки Вы можете изучить по следующим ссылкам:

Sockets

Sockets (сокеты) позволяют прикрепить Spring Arm к кости Skeletal Mesh или к сокету, обеспечивая точное позиционирование относительно объекта.

Настройки Sockets
Настройки Sockets
  • Parent Socket (родительский сокет) — позволяет прикрепить Spring Arm к определенному сокету (точке крепления) на Skeletal Mesh, что даёт возможность гибко управлять положением пружинного рычага относительно персонажа, привязывая его, например, к голове, плечу или спине.

Camera

Категория Camera (камера) управляет длиной Spring Arm в нормальном состоянии (без столкновений) и позволяет настраивать смещения камеры относительно начала и конца пружинного рычага.

Настройки Camera
Настройки Camera
  • Target Arm Length (длина плеча цели) — определяет естественную длину Spring Arm, когда нет столкновений. Фактически это желаемое расстояние между объектом (персонажем) и камерой. Иначе говоря, устанавливает основное расстояние, на котором камера будет находиться от объекта.
  • Socket Offset (смещение сокета) — смещение конца Spring Arm. Позволяет точно настроить положение камеры относительно конца пружинного рычага (вверх/вниз/вправо/влево), что можно использовать, например, для приподнятия камеры над плечом персонажа. Для смещения камеры необходимо использовать именно этот параметр, а не относительное смещение (Relative Offset) прикрепленного компонента (камеры), чтобы трассировка луча для обнаружения столкновений работала правильно.
  • Target Offset (смещение цели) — смещение начала Spring Arm (в мировой координатной системе). Позволяет смещать пружинный рычаг целиком в мировом пространстве (менее распространено в использовании, чем Socket Offset).

Camera Collision

Категория Camera Collision (столкновения камеры) определяет, будет ли проверяться наличие коллизии (столкновений), и задаёт размер области, используемой для этой проверки, чтобы предотвратить прохождение камеры сквозь стены и другие объекты.

Настройки Camera Collision
Настройки Camera Collision
  • Probe Size (размер сферы запроса) — определяет размер специальной системной сферы запроса, используемой для проверки на столкновения, в единицах Unreal. Чем больше размер сферы, тем раньше пружинный рычаг обнаружит столкновение и начнет приближать камеру.
  • Probe Channel (канал сферы запроса) — определяет канал столкновений, используемый специальной системной сферой для обнаружения столкновений. По умолчанию используется ECC_Camera.
  • Do Collision Test (проверять столкновения) — если установлено значение True, выполняется проверка на столкновения с использованием Probe Channel и Probe Size, чтобы предотвратить «прохождение» камеры сквозь объекты уровня.

Camera Settings

Категория Camera Settings (настройки камеры) контролирует наследование вращения (Pitch, Yaw, Roll) от родительского объекта и позволяет использовать вращение контроллера персонажа для управления камерой.

Категория настроек Camera Settings
Категория настроек Camera Settings
  • Use Pawn Control Rotation (использовать вращение контроллера персонажа) — включить использование вращения контроллера для установки вращения Spring Arm, если пружинный рычаг размещен на Pawn (персонаже). Если параметр отключён, пружинный рычаг вернётся к использованию его установленного Relative Rotation.
  • Inherit Pitch (наследовать тангаж) — должен ли Spring Arm наследовать тангаж (угол наклона вверх/вниз) от родительского компонента. Определяет, будет ли камера наклоняться вверх/вниз вместе с родительским объектом.
  • Inherit Yaw (наследовать рысканье) — должен ли пружинный рычаг наследовать рысканье (угол поворота влево/вправо) от родительского компонента. Определяет, будет ли камера поворачиваться влево/вправо вместе с родительским объектом.
  • Inherit Roll (наследовать крен) — должен ли пружинный рычаг наследовать крен (угол наклона вбок) от родительского компонента. Определяет, будет ли камера наклоняться вбок вместе с родительским объектом. Параметр используется редко.

Lag

Категория Lag (задержка) включает и настраивает задержку камеры относительно целевой позиции и вращения, создавая более плавное и кинематографичное движение камеры.

Настройки Lag компонента Spring Arm
Настройки Lag компонента Spring Arm
  • Enable Camera Lag (включить задержку камеры) — если установлено значение True, камера будет запаздывать за целевой позицией, чтобы сгладить своё движение. Добавляет плавности движению камеры, предотвращая резкие рывки.
  • Enable Camera Rotation Lag (включить задержку вращения камеры) — если установлено значение True, камера будет запаздывать за целевым вращением, чтобы сгладить свой поворот. Добавляет плавности вращению камеры, предотвращая резкие повороты.
  • Draw Debug Lag Markers (отображать отладочные маркеры задержки) — если установлено значение True и включена задержка положения камеры (Enable Camera Lag), параметр отображает маркеры в целевой позиции камеры (зелёным цветом) и в положении с задержкой (жёлтым цветом). Позволяет визуализировать эффект задержки, что полезно при отладке.
  • Camera Lag Speed (скорость задержки камеры) — если Enable Camera Lag установлено в True, параметр управляет скоростью, с которой камера достигает целевой позиции. То есть определяет, насколько быстро камера будет «догонять» целевую позицию. Низкие значения создают более плавное, но медленное движение, высокие значения — более резкое и быстрое.
  • Camera Rotation Lag Speed (скорость задержки вращения камеры) — если Enable Camera Rotation Lag установлено в True, параметр управляет скоростью, с которой камера достигает целевого вращения. То есть определяет, насколько быстро камера будет «догонять» целевое вращение. Низкие значения создают более плавное, но медленное вращение, высокие значения — более резкое и быстрое.
  • Camera Lag Max Distance (максимальное расстояние задержки камеры) — максимальное расстояние, на которое целевая позиция камеры может отставать от текущего местоположения. Предотвращает слишком сильное отставание камеры, даже если объект движется очень быстро.
  • Clamp to Max Physics Delta Time (ограничить максимальным временем дельты физики) — если установлено значение True и цель вида камеры (View Target) моделируется с использованием физики, то используется такое же ограничение максимального шага времени (Delta Time), что и в физической системе. Предотвращает нежелательное поведение камеры при использовании физики.
  • Use Camera Lag Substepping (использовать подэтапы задержки камеры) — если установлено значение True, выполняются промежуточные этапы демпфирования камеры, чтобы она хорошо обрабатывала колеблющиеся частоты кадров (FPS). Улучшает стабильность задержки камеры при сильном колебании FPS.
  • Camera Lag Max Time Step (максимальный шаг времени задержки камеры) — максимальный шаг времени, используемый при промежуточных этапах задержки камеры.

Blueprint-функции, связанные с классом Spring Arm Component в Unreal Engine

Blueprint-функции, связанные с классом Spring Arm Component в Unreal Engine
Blueprint-функции, связанные с классом Spring Arm Component в Unreal Engine
  • Add Spring Arm Component (добавить компонент пружинного рычага) — динамически (во время действия игры через код) добавляет компонент Spring Arm к любому Актору.
  • Get Target Rotation (получить целевое вращение) — возвращает целевое вращение, которое наследует Spring Arm (данное значение используется в качестве базовой цели для вращения компонента пружинного рычага). Иначе говоря, функция предоставляет вращение, которое обычно передается от контроллера персонажа. То есть это «цель», к которой стремится вращение Spring Arm.
  • Get Unfixed Camera Position (получить неподкорректированное положение камеры) — возвращает положение, где должна быть камера без применения смещения, вызванного проверкой на столкновения (Collision Test). Иначе говоря, предоставляет положение камеры, которое было бы, если бы Spring Arm не сталкивался ни с какими объектами. Это полезно для определения того, насколько сильно столкновение с объектами влияет на положение камеры.
  • Is Collision Fix Applied (применена ли коррекция столкновений) — возвращает значение True, если в данный момент применяется смещение, вызванное проверкой на столкновения (Collision Test).

Практический урок в Unreal Engine. Настройка Spring Arm для персонажа с видом от третьего лица

По умолчанию в шаблоне проекта игры от третьего лица в Unreal Engine (UE5) камера, а также компонент Spring Arm настроены так, что персонаж отображается ровно по середине экрана.

Стандартное расположение камеры в шаблоне игры от третьего лица в Unreal Engine (UE5)
Стандартное расположение камеры в шаблоне игры от третьего лица в Unreal Engine (UE5)

Во многих играх практикуется именно такое расположение, но также и во многих других играх расположение персонажа сдвинуто немного левее. Давайте изменим некоторые настройки компонента Spring Arm, чтобы реализовать такой вид, а также введём небольшую задержку камеры.

  1. Откроем в шаблоне игры от третьего лица Blueprint персонажа BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints.
  2. Перейдём в настройки Details компонента Spring Arm. Напоминаю, что в шаблоне от третьего лица этот компонент переименован в CameraBoom.
  3. Уменьшим длину рычага. Для этого установим новое значение параметра Target Arm Length, равное 170.
  4. При помощи смещения сокета пружинного рычага сдвинем нашу камеру несколько левее и выше. Для этого установим новые значения по осям Y и Z параметра Socket Offset на 80 и 70 соответственно.
  5. Введём небольшую задержку перемещения камеры. Для этого включим параметр Enable Camera Lag и через параметр Camera Lag Speed установим скорость задержки на 15. Сильно уменьшать скорость задержки не рекомендую, иначе игроку будет некомфортно. Также вообще не рекомендую делать задержку камеры при вращении (Enable Camera Rotation Lag). От такой задержки у игроков голова идёт кругом.
Меняем настройки Spring Arm в персонаже BP_ThirdPersonCharacter (производим смещение и задержку)
Меняем настройки Spring Arm в персонаже BP_ThirdPersonCharacter (производим смещение и задержку)
  1. Также повернём немного вниз саму камеру. Для этого выделим компонент камеры FollowCamera и в меню Details / Transform / Rotation установим поворот по оси Y на -5 градусов.

Компонент Spring Arm в Unreal Engine

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


наш Телеграм канал

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

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