Capsule Collision Component в Unreal Engine

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

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

Capsule Component (Capsule Collision)

Capsule Component (Capsule Collision) в Unreal Engine — это компонент, представляющий собой невидимый в игре коллизионный геометрический примитив в виде капсулы (Capsule), который может быть добавлен к любому Актору (Actor) как в Blueprint, так и в C++. Предназначен он преимущественно для реализации простой коллизии (столкновений) для вертикальных персонажей. В редакторе границы компонента визуализируются в виде изогнутых линий.

Capsule Component (Capsule Collision) - компонент простой капсульной коллизии
Capsule Component (Capsule Collision) — компонент простой капсульной коллизии

Перевод официальной справки: Capsule Component — капсула, обычно используемая для простой коллизии. Границы отображаются в редакторе в виде линий.

Зачастую Capsule Collision используется для создания простой коллизии у объектов, представляющих перемещающихся вертикальных персонажей, так как у данной формы, в отличие от Box Collision, отсутствуют острые углы, мешающие передвижению персонажа, и, в отличие от Sphere Collision, представляющей округлую сферу, капсула может вертикально растягиваться в высоту персонажа.

Компонент Capsule Collision, используемый в качестве простой коллизии для игрового персонажа или NPC
Компонент Capsule Collision, используемый в качестве простой коллизии для игрового персонажа или NPC

Основное предназначение Capsule Collision Component — служить простой формой коллизии (столкновения) для различных передвигающихся объектов Actor, Pawn, Character. Данный компонет даёт возможность определять, когда объект сталкивается или пересекается с другими объектами в мире и запускать соответствующую логику либо внутри другого объекта, либо внутри текущего объекта, обрабатывая это взаимодействие.

Наследование классов

Capsule Component наследуется от класса Shape Component, расширяя его функционалом непосредственной реализации коллизионной формы примитива в виде капсулы (Capsule).

Capsule Component расширяет родительский класс Shape Component функционалом непосредственной реализации коллизионной формы примитива в виде капсулы (Capsule)
Capsule Component расширяет родительский класс Shape Component функционалом непосредственной реализации коллизионной формы примитива в виде капсулы (Capsule)

Настройки Capsule Component (Capsule Collision) во вкладке Details

Ниже мы разберём некоторые опции во вкладке Details, которые используются чаще остальных при настройке Capsule Collision. Остальные же опции вкладки Details полностью аналогичны параметрам компонента статического Меша, изучить которые Вы можете в отдельной статье: Details в Static Mesh Component.

Настройки Capsule

Основные настройки Capsule Collision с точки зрения определения самой капсулы немногочисленны. Находятся они во вкладке Details в разделе Shape.

Capsule Collision - настройки Shape
Capsule Collision — настройки Shape
  • Capsule Half Height (половина высоты) — половина высоты цилиндрической части капсулы (высота от точки Pivot Point). Значение не может быть меньше, чем радиус (Capsule Radius).
  • Capsule Radius — радиус капсулы (как цилиндра, так и полусфер). Значение не может быть больше, чем половина высоты капсулы (Capsule Half Height).
  • Line Thickness — толщина линии прорисовки самой капсулы.
  • Shape Color — цвет линий прорисовки самой капсулы.

Настройки Rendering

По умолчанию капсула коллизии прорисовывается только в редакторе. На игровом уровне коллизия всегда скрыта. Но при разработке игры для тестов игровых механик часто требуется видеть границы коллизии. В таких ситуациях используют параметр Hidden in Game (скрытый в игре) раздела Rendering вкладки Details. По умолчанию эта опция включена, соответственно, коллизия в игре скрыта. Если же опцию отключить, то границы коллизии в игре станут видны, что можно использовать при тестировании и настройке игровых механик.

Capsule Collision Rendering - Hidden in Game (скрыть в игре)
Capsule Collision Rendering — Hidden in Game (скрыть в игре)

Настройки Collision

Ещё один раздел из вкладки Details, который часто используется при настройке Capsule Collision, — это, собственно, настройка самой коллизии, а именно выбор готового пресета коллизии или детальная пользовательская настройка с выбором режима работы коллизии, типа объекта и ответной реакции коллизии на пересечение с другими типами объектов.

Настройки Collision
Настройки Collision

Так как коллизия, её типы, режимы, пресеты — это в целом очень обширная тема, то все эти вопросы рассмотрены очень подробно в отдельных развёрнутых статьях:

Функции Capsule Component (Capsule Collision)

Функции компонента Capsule Component (Capsule Collision)
Функции компонента Capsule Component (Capsule Collision)
  • Get Scaled Capsule Half Height — возвращает половину высоты капсулы (от центра до конца полусферы), умноженную на масштаб компонента по оси Z. Это значение учитывает как цилиндрическую, так и полусферическую часть капсулы, и используется для получения актуального размера капсулы в мировых координатах с учетом масштабирования компонента.
  • Get Scaled Capsule Half Height Without Hemisphere — возвращает половину высоты цилиндрической части капсулы (то есть без учета полусфер на концах), умноженную на масштаб компонента по оси Z. Это значение соответствует вертикальному расстоянию от центра капсулы до начала закругления верхней полусферы, с учетом текущего масштаба компонента.
  • Get Scaled Capsule Radius — возвращает радиус капсулы, умноженный на масштаб компонента по минимальной из осей X и Y. Это позволяет получить актуальный радиус капсулы в мировых координатах с учетом текущего масштабирования компонента.
  • Get Scaled Capsule Size — возвращает радиус и половину высоты капсулы, умноженные на масштаб компонента. Половина высоты включает как цилиндрическую, так и полусферическую часть капсулы.
  • Get Scaled Capsule Size Without Hemisphere — возвращает радиус и половину высоты капсулы (без учета полусфер на концах), умноженные на масштаб компонента.
  • Get Shape Scale — возвращает унифицированный масштаб, который равен минимальному значению среди всех осей масштаба (X, Y, Z) компонента, используемый для этой формы (Shape).
  • Get Unscaled Capsule Half Height — возвращает половину высоты капсулы (от центра до конца верхней или нижней полусферы), без учета масштабирования компонента. Это исходное значение высоты, заданное непосредственно в свойствах компонента, включающее как цилиндрическую, так и полусферическую часть капсулы.
  • Get Unscaled Capsule Half Height Without Hemisphere — возвращает половину высоты цилиндрической части капсулы, без учета масштабирования компонента.Это значение соответствует вертикальному расстоянию от центра капсулы до начала закругления верхней полусферы, и не включает полусферические окончания.
  • Get Unscaled Capsule Radius — возвращает радиус капсулы без учета масштабирования компонента.
  • Get Unscaled Capsule Size — возвращает радиус и половину высоты капсулы (включая как цилиндрическую, так и полусферическую части) без учета масштабирования компонента.
  • Get Unscaled Capsule Size Without Hemisphere — возвращает радиус и половину высоты цилиндрической части капсулы (без полусфер на концах) без учета масштабирования компонента.
  • Set Capsule Half Height — устанавливает новое значение половины высоты капсулы (CapsuleHalfHeight). Это расстояние от центра капсулы до конца верхней или нижней полусферы, без учета масштабирования компонента.
  • Set Capsule Radius — устанавливает новое значение радиуса капсулы, без учета масштабирования компонента.
  • Set Capsule Size — устанавливает новые значения радиуса и половины высоты капсулы (от центра до конца верхней или нижней полусферы), без учета масштабирования компонента.

Capsule Component (Collision Cylinder)

Capsule Component (Collision Cylinder) — корневой компонент (Root-component), используемый по умолчанию в Blueprint-классе Character в качестве капсульной Simple-коллизии для персонажа.

Capsule Component (Collision Cylinder)
Capsule Component (Collision Cylinder)

По сути, это стандартный компонент Capsule Collision, входящий в набор компонентов Unreal Engine, но имеющий специальное название для капсульной коллизии в классе Character, а именно — Capsule Component (Collision Cylinder), входящий в состав этого класса по умолчанию.

Capsule Component (Collision Cylinder) нельзя удалить из класса Character или заменить напрямую на другую форму коллизии, поскольку на нём основаны все механизмы движения Character Movement.

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

В качестве практики в Blueprints по работе с Capsule Component (Capsule Collision) Вы можете посмотреть урок, где при помощи Ragdoll создаётся анимация падения персонажа с симуляцией физического увечья, где при активации Ragdoll необходимо в коде Blueprint отключить Capsule Collision у персонажа. Перейти к практике >>

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


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

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

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