Unreal Engine Collision — разбираем коллизии игрового движка Анрил Энджин (UE4 и UE5)

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

Unreal Engine Collision

Collision в Unreal Engine — это упрощённая геометрическая модель объекта, которая повторяет его исходную трёхмерную модель (mesh), но содержит меньшее количество полигонов. Коллизия необходима для отслеживания пересечений и столкновений объектов друг с другом, а также для настройки правил их взаимодействия. Правильное её использование позволяет создавать реалистичное поведение объектов, учитывая физические законы.

Collision в Unreal Engine — это упрощённая геометрическая модель объекта. На текущем рисунке это модель из зелёных граней.
Collision в Unreal Engine — это упрощённая геометрическая модель объекта. На текущем рисунке это модель из зелёных граней.

Коллизия может быть заложена в трёхмерную модель на этапе её создания в специализированных редакторах, таких как Maya или Blender. Также её можно добавить непосредственно в самом движке Unreal Engine, используя как ручные, так и автоматические инструменты.

Важно понимать, что коллизия в Анрил Энджин содержится только в нескольких компонентах, таких как:

  • Static Mesh Component;
  • Skeletal Mesh Component;
  • Collision Component (Box, Sphere, Capsule);
  • Geometry Collection;
  • и в некоторых других компонентах.

То есть, на самом деле, в самих объектах Actor, Pawn и других объектах в UE5 (UE4) коллизий нет. Всё, что мы видим в этих объектах, — это Collision их компонентов. Иначе говоря, Collision объекта представляет собой совокупность коллизий его внутренних компонентов.

Типы коллизий в Unreal Engine (UE4, UE5)

В Unreal Engine для Static Mesh существует два типа коллизии, которые разработчики могут использовать для определения взаимодействия объектов в игровом мире:

  • Simple (простая);
  • Complex (сложная).

В Skeletal Mesh применяется другой тип коллизии на основе физических тел и их ограничений, описанных в специальном ассете Physics Assets. Также эту физическую коллизию ещё называют Ragdoll или «тряпичная кукла» (применяется для человекоподобных персонажей).

Детальное описание «тряпичной куклы» с разбором всех её параметров и примерами кода Вы можете изучить в статье: Unreal Engine Ragdoll.

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

Правила использования типов коллизий движком задаются в параметрах Details редактора Static Mesh в разделе Collision в опции Collision Complexity.

Опция Collision Complexity
Опция Collision Complexity

В этой опции на выбор пользователя доступно четыре варианта:

  • Project Default — выбирается тип коллизии в соответствии с настройками проекта по умолчанию.
  • Simple And Complex — используются оба типа: и простой, и сложный. Но движок выбирает сам тот или иной тип в зависимости от конкретной ситуации. Простые запросы на столкновение будут использовать тип Simple, а сложные запросы — Complex.
  • Use Simple Collision As Complex — простая коллизия используется как сложная. То есть, если выполняется сложный запрос, движок всё равно будет проверять Simple Collision. Это помогает экономить память и повышать производительность.
  • Use Complex Collision As Simple — сложная коллизия используется как простая. То есть, если выполняется простой запрос, движок всё равно будет проверять Complex Collision. Это позволяет увеличить точность взаимодействия объектов друг с другом.

Simple Collision

Simple Collision (простая форма столкновения) — базовый тип коллизии, в которой для определения границ столкновения объектов используются геометрические примитивы, такие как кубы, сферы, капсулы и выпуклые оболочки.

Эти формы являются менее ресурсоемкими по сравнению со сложными Mesh и отлично подходят для создания коллизий для динамических объектов и элементов окружения, где высокая точность не требуется. Они просты в реализации, обеспечивают быструю проверку столкновений и пересечений, жертвуя точностью ради скорости вычислений. В результате чего используют меньше вычислительных ресурсов, что повышает общую производительность.

Simple Collision: выпуклая оболочка (зелёные грани) для лестницы, сфера (жёлтые грани) для персонажа
Simple Collision: выпуклая оболочка (зелёные грани) для лестницы, сфера (жёлтые грани) для персонажа

Simple Collision в Unreal Engine можно добавить к объекту как в редакторе Static Mesh через меню Collision, установив эту коллизию непосредственно на сам Mesh.

Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision
Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision

Так и в Blueprint-классах Actor, добавив соответствующий компонент коллизии (Box/Sphere/Capsule Collision Component).

Simple Collision в Unreal Engine можно добавить к Актору через компоненты Box/Sphere/Capsule Collision Component
Simple Collision в Unreal Engine можно добавить к Актору через компоненты Box/Sphere/Capsule Collision Component

При этом доступны основные виды Simple Collision:

  • Sphere (сфера) — используется для объектов с круглой формой, таких как шары или другие округлые элементы.
  • Box (куб) — идеально подходит для кубических или прямоугольных объектов. Например, ящики, строения и другие платформы.
  • Capsule (капсула) — часто применяется для персонажей и объектов, имитирующих человеческую форму, так как капсула хорошо подходит для движения и взаимодействия с окружением.
  • Hull (выпуклая оболочка) — применяется при автоматическом создании простой коллизии в Static Mesh Editor через меню Collision инструментами Add 10-26 DOP Simplified Collision.

Примером, когда должна использоваться Simple Collision, может являться сцена с множеством деревьев. Вместо того чтобы для создания сложной коллизии использовать точные трёхмерные модели Mesh для каждого дерева, необходимо применить простые капсульные формы коллизий вокруг стволов и сферические формы для крон. Это существенно ускорит проверку столкновений и снизит нагрузку на игровой движок.

Complex Collision

Complex Collision (сложная форма столкновения)  — представляет собой более продвинутый метод обработки коллизий, который способствует более точному взаимодействию объектов в игре. Данная коллизия создаётся движком автоматически, используя оригинальную геометрию трёхмерных моделей Mesh, чтобы обеспечить максимальную точность в определении границ объектов. Это означает, что коллизия определяется на основе всех треугольников (полигональных сеток), которые составляют объект, что позволяет получить более сложное и точное взаимодействие с игровым пространством.

Complex Collision - сложная коллизия для лестницы (бирюзовая сетка), которая в точности повторяет трёхмерную модель самого Mesh
Complex Collision — сложная коллизия для лестницы (бирюзовая сетка), которая в точности повторяет трёхмерную модель самого Mesh

Сложная коллизия позволяет избежать проблем с неправильными столкновениями. Объекты будут взаимодействовать более реалистично, учитывая их форму и детали.

Разница между Simple и Complex Collision
Разница между Simple и Complex Collision

Complex Collision в Unreal Engine является мощным инструментом для обеспечения максимальной точности при обработке пересечений и столкновений. Но взамен, из-за необходимости учитывать каждую вершину и грань модели Mesh, проверка таких столкновений требует больше вычислительных ресурсов, что может привести к снижению производительности и частоты кадров (FPS), особенно при большом количестве объектов.

Чаще всего данная коллизия используется для ключевых объектов, которые требуют точного физического моделирования, таких как транспортные средства, оружие или персонажи.

Collision Object Channels

Для установления различных правил взаимодействия объектов друг с другом с точки зрения их коллизий в Unreal Engine существуют каналы объектов.

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

Иначе говоря, это категории или группы коллизий, которые могут быть назначены объектам в игре. Каждый объект в Unreal Engine (UE4, UE5), содержащий в себе коллизию имеет свой собственный Object Channel, который определяет, как он будет реагировать на столкновения с другими объектами. Это позволяет разработчикам создавать гибкую систему коллизий.

Object Channels включает в себя:

  • Object Types (типы объектов) — типы, которые присваиваются объектам, чтобы определить, как эти объекты будут реагировать на коллизии. Грубо говоря, это имя канала.
  • Response (ответы при столкновении) — каждому каналу можно задать определённый ответ при столкновении с другими каналами. Это может быть Block (блокировать), Overlap (пересекаться) или Ignore (игнорировать).

То есть, Object Channel (канал объекта) — это Object Type (тип объекта, имя канала) + Response (конкретный ответ этого типа объекта при столкновении).

Object Types

Object Type (тип объекта) — это атрибут, присваиваемый объекту, который указывает на его тип в контексте коллизии. В Анрил Энджин есть несколько стандартных Object Types, но разработчики также могут создавать собственные типы, чтобы адаптировать их под специфические нужды своей игры.

Стандартные Object Types в Unreal Engine:

  • World Static — тип для объектов, которые являются частью статической среды (например, стены, полы). Эти объекты не двигаются в игре.
  • World Dynamic — тип для динамичных объектов, которые могут двигаться в результате анимации или кода (например, двери, лифт, движущиеся платформы).
  • Pawn — тип для игровых персонажей или AI-персонажей. Любая сущность, управляемая игроком.
  • Physics Body — тип для объектов, перемещаемых благодаря физической симуляции.
  • Vehicle — тип для транспортных средств, таких как машины, самолёты или лодки.
  • Destructible — тип для объектов, которые могут быть разрушены, например, разрушаемые стены или ящики.

Collision Object Responses

Collision Object Responses определяет ответную реакцию объекта на другие каналы. Всего для объектов определены три вида реакции:

  • Block — блокировать другие каналы. При этом, если у второго объекта реакция тоже Block, то оба объекта сталкиваются, не пропуская друг друга. Также происходит вызов события столкновения (Event Hit).
  • Overlap — пересекаться с другими каналами. При этом, если у второго объекта реакция настроена на Overlap или Block, то оба объекта пересекаются, пропуская друг друга сквозь себя. Также, если включена соответствующая настройка, происходит вызов события пересечения (Event Overlap).
  • Ignore — полностью игнорировать любое взаимодействие с каналами. При этом неважно, какая реакция у второго объекта. Никакого взаимодействия у объектов не будет. Никаких событий вызываться не будет. Объекты будут пропускать друг друга сквозь себя.

Правила взаимодействия ответных реакций коллизий двух пересекающихся объектов:

  1. Два объекта столкнутся, заблокируются и у них сработают события Hit только тогда, когда у обоих объектов Collision Object Responses равно Block. * При столкновении в результате физической симуляции для вызова события Hit в настройках коллизии обязательно должна быть включена опция Simulation Generate Hit Events.
  2. Два объекта пересекутся и у них сработают события Overlap только тогда, когда у обоих объектов Collision Object Responses равно Overlap или у одного Overlap, а у другого Block. * Для вызова события Overlap в настройках коллизии обязательно должна быть включена опция Generate Overlap Events.
  3. Два объекта просто пересекутся, полностью игнорируя друг друга, без вызова каких-либо событий, если хотя бы у одного из объектов Collision Object Responses равно Ignore.

Как в Unreal Engine создать пользовательский Object Channel

В Unreal Engine имеется возможность создавать свои пользовательские каналы объекта (Object Channel), где каждый канал представляет собой пользовательский тип объекта (Object Type) и конкретный ответ при столкновении для него (Response).

Для этого, перейдите в настройки проекта Edit / Project Settings. Далее в раздел Engine / Collision.

И в разделе Object Channels добавьте свой пользовательский канал, нажав на кнопку New Object Channel. В небольшом открывшемся окошке укажите Ваш новый Object Types (его название), задав ему Response (ответ по умолчанию для этого канала), в виде одного из значений: Block, Overlap или Ignore.

Как в Unreal Engine создать пользовательский Object Channel
Как в Unreal Engine создать пользовательский Object Channel

Всего в Анрил Энджин можно создать до 18 пользовательских каналов, включая каналы объектов и каналы трассировки, о которых речь пойдёт ниже в следующем разделе статьи.

Если пользовательский тип объекта, который уже используется в игре, будет удалён, то все применения данного типа будут возвращены к дефолтному типу World Static.

Примером использования пользовательских каналов объектов можно привести следующее: создаём разные каналы для игровых объектов, таких как «Player», «Enemy», «Projectile», и задаём им правила, по которым они будут взаимодействовать друг с другом. Например, «Player» будет блокировать «Enemy», но игнорировать «Projectile».

Trace Channels

Trace Channels — это каналы трассировки, используемые для проверки пересечения Line Trace (трассировочного луча, сферы, коробки или капсулы) с коллизией объектов игрового мира. Причём в зависимости от конкретного канала трассировки, некоторые объекты могут игнорироваться при пересечениях, а другие — наоборот, учитываться.

Сама трассировка (в форме луча, сферы, коробки или капсулы) создаётся группой специализированных функций языка Blueprint, таких как Line Trace By Channel, Line Trace By Profile и других функций этой группы.

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

На рисунке ниже показан пример использования Trace Channels. Выпущенный луч работает по каналу трассировки Visibility. То есть он ищет пересечения с любым объектом, который настроен на этот канал, а другие объекты просто игнорирует. Так как для персонажа заданы настройки игнорировать канал трассировки Visibility, то луч с персонажем не взаимодействует и проходит сквозь него. И останавливается уже только на следующем объекте, который учитывает трассировку по каналу Visibility.

Пример использования Collision Trace Channels в Unreal Engine
Пример использования Collision Trace Channels в Unreal Engine

Таким образом, выпуская Line Trace по определённому Trace Channel, мы можем идентифицировать определённые объекты на расстоянии. При чём фактически не сталкиваясь с ними, на расстоянии луча получать необходимую информацию об этом столкновении и этих объектах в специализированной ноде Break Hit Result.

Trace Channels Default

В Unreal Engine по умолчанию уже имеются два канала трассировки:

  • Visibility — используется для проверки, виден ли необходимый объект на расстоянии трассировочного луча этого канала. Это полезно для различных игровых механик, таких как прицеливание, стрельба или даже для создания систем ИИ, которые могли бы реагировать на видимые объекты. Например, если враг будет выпускать из себя с определённой периодичностью Line Trace по каналу Visibility и эта трассировка пересечется с игроком, значит, враг видит игрока и находится на достаточном расстоянии, чтобы начать атаковать.
  • Camera — это специальная категория трассировки, созданная для проверки коллизий и видимости, связанной с камерой. С её помощью можно проверять, есть ли преграды на пути между камерой и игровыми объектами. Должны ли игровые объекты блокировать камеру игрока или пропускать через себя. Обычно используется при трассировке от камеры к чему-либо.

Как в Unreal Engine создать пользовательский Trace Channel

Как и в случае с каналами объекта, в Unreal Engine также можно создавать и свои пользовательские каналы трассировки. Но, как уже я писал выше, в движке имеется общее ограничение на создание пользовательских каналов. Их должно быть не более 18, включая и каналы объектов, и каналы трассировки вместе.

Создаются Trace Channels точно также, как и Object Channel. Перейдите в настройки проекта Edit / Project Settings. Далее в раздел Engine / Collision. И в разделе Trace Channels добавьте свой пользовательский канал, нажав на кнопку New Trace Channel. В небольшом открывшемся окошке укажите название канала, задав ему Response (ответ по умолчанию для этого канала), в виде одного из значений: Block, Overlap или Ignore.

Как в Unreal Engine создать пользовательский Trace Channel
Как в Unreal Engine создать пользовательский Trace Channel

Если пользовательский канал трассировки, который уже используется в игре, будет удалён, то поведение трассировки будет неопределённым.

Collision Presets

Collision Presets (пресеты коллизий) — группа предустановленных правил Collision Enabled, Object Type и Collision Responses (Block, Overlap или Ignore), которые можно применить к конкретному объекту, чтобы быстро определить его поведение относительно всех типов объектов (Object Types) без необходимости настраивать взаимодействие с каждым типом индивидуально.

Collision Presets в Unreal Engine
Collision Presets в Unreal Engine

Иначе говоря, Collision Presets — это предустановленные настройки коллизий, которые позволяют разработчикам быстро и удобно управлять взаимодействиями между объектами в игровом мире. Эти пресеты определяют, как объекты реагируют на столкновения и трассировки, и могут значительно упростить процесс настройки коллизий, особенно в крупных проектах.

Collision Enabled

В пресетах коллизии, как уже я писал ранее, настраиваются типы объектов и их ответные реакции. Всё это мы выше в статье уже разбирали. Но, кроме этого, в пресетах также настраиваются и Collision Enabled — режимы работы коллизии текущего объекта.

Collision Enabled — режимы работы коллизии текущего объекта
Collision Enabled — режимы работы коллизии текущего объекта

Давайте рассмотрим их более детально.

На выбор пользователя в Unreal Engine представлены следующие варианты режимов работы коллизии:

  • No Collision — коллизия полностью отключена. Объект вообще не будет участвовать во взаимодействиях с другими типами объектов, игнорируя все столкновения и пересечения.
  • Query Only — у коллизии включена только обработка запросов. Объект будет реагировать только на запросы к коллизии, поданные из кода (Blueprint, C++) и не будет реагировать на физические столкновения (физическую симуляцию).
  • Physics Only — у коллизии включена только физика. Объект будет реагировать только на физические столкновения, но не будет учитываться при запросах, например, при трассировке.
  • Collision Enabled (Query and Physics) — коллизия полностью включена, будет обрабатывать как запросы, так физическую симуляцию. То есть, текущий объект будет реагировать как на физические столкновения, так и на любые запросы к коллизии из кода, например, при трассировках.
  • Probe Only — коллизия включается только для проверки (оценки) потенциального физического столкновения с получением информации об этом потенциальном столкновении, но без самого физического столкновения. Запросы к коллизии также в этом режиме не работают.
  • Query and Probe — коллизия включается как для проверки (оценки) потенциального физического столкновения, так и для запросов с получением информации об этом потенциальном столкновении, но без самого физического столкновения.

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

Основные Collision Presets в Unreal Engine

В Unreal Engine доступно достаточно много предустановленных пресетов коллизий, которые можно использовать в своей работе. Пресеты доступны в компонентах коллизий во вкладке Details в разделе Collision / Collision Presets.

Выбор пресета коллизии
Выбор пресета коллизии

Разберём каждый из пресетов:

  • Custom — позволяет настроить собственные правила взаимодействия текущего объекта, если стандартные пресеты не подходят, выбирая режим работы коллизии, тип объекта и его ответные реакции (Block, Overlap или Ignore) на другие типы объектов.
  • No Collision — коллизия полностью отключена. Объект вообще не будет участвовать во взаимодействиях с другими Object Type, игнорируя все столкновения и пересечения.
  • Block All — объекту назначается тип World Static, его коллизия полностью включена. При этом он будет блокировать все другие Object Type. Часто применяется для создания статичных объектов, которые не пропускают других объектов (стены, пол, другие твёрдые поверхности).
  • Overlap All — объекту назначается тип World Static, его коллизия работает только для запросов. При этом объект будет пересекаться со всеми другими Object Type, вызывая события при пересечении (если включена соответствующая настройка), и не будет блокировать их. Обычно используется для создания статичных объектов, которые должны пропускать другие объекты сквозь себя, но при этом регистрировать пересечения и запускать соответствующие события (например, для триггеров или зон обнаружения).
  • Block All Dynamic — объекту назначается тип World Dynamic, его коллизия полностью включена. При этом он будет блокировать все другие типы объектов. Обычно используется для создания динамичных объектов, которые не пропускают других объектов, сталкиваясь с ними (платформы, снаряды). А также перемещаются под воздействием физики.
  • Overlap All Dynamic — объекту назначается тип World Dynamic, его коллизия работает только для запросов. При этом объект будет пересекаться со всеми другими Object Type, вызывая события при пересечении (если включена соответствующая настройка), и не будет блокировать их. Часто применяется для создания динамичных объектов, которые должны пропускать другие объекты сквозь себя, но при этом регистрировать пересечения и запускать соответствующие события.
  • Ignore Only Pawn — объекту назначается тип World Dynamic, его коллизия работает только для запросов. При этом он будет блокировать все другие Object Type, кроме двух, которые полностью будет игнорировать — Pawn и Vehicle. Часто применяется к декорациям, которые должны игнорироваться игроками, но могут мешать другим объектам.
  • Overlap Only Pawn — объекту назначается тип World Dynamic, его коллизия работает только для запросов. При этом он будет блокировать все другие Object Type, кроме трёх: Pawn и Vehicle — с ними будет пересекаться, а канал Trace Camera игнорировать.
  • Pawn — объекту назначается тип Pawn, его коллизия полностью включена. При этом он будет блокировать все другие Object Type, кроме канала Trace Visibility, его он будет игнорировать. Обычно использоваться для капсулы коллизии любого игрового персонажа или ИИ.
  • Spectator — объекту назначается тип Pawn, его коллизия работает только для запросов. При этом он будет игнорировать все другие типы объектов, кроме типа World Static, которого он будет блокировать. Обычно используется для персонажа в режиме стороннего наблюдения за игрой.
  • Character Mesh — объекту назначается тип Pawn, его коллизия работает только для запросов. При этом он будет блокировать все другие типы объектов, кроме типов Pawn и Vehicle, а также канала Trace Visibility, их он будет игнорировать. Обычно используется для Mesh персонажа.
  • Physics Actor — объекту назначается тип Physics Body (физическое тело), его коллизия полностью включена. При этом он будет блокировать все другие Object Type. Обычно используется для объектов симулирующих физику. Например, падающие ящики или предметы, которые можно толкнуть.
  • Destructible — объекту назначается тип Destructible (разрушаемый), его коллизия полностью включена. При этом он будет блокировать все другие типы объектов. Обычно используется для разрушаемых объектов.
  • Invisible Wall — объекту назначается тип World Static, его коллизия полностью включена. При этом он будет блокировать все другие типы объектов, кроме канала Trace Visibility, его он будет игнорировать. Обычно используется для создания невидимых статичных объектов, которые не пропускают других объектов (невидимая стена).
  • Invisible Wall Dynamic — объекту назначается тип World Dynamic, его коллизия полностью включена. При этом он будет блокировать все другие Object Type, кроме канала Trace Visibility, его он будет игнорировать. Обычно используется для создания невидимых динамичных объектов, которые не пропускают других объектов.
  • Trigger — объекту назначается тип World Dynamic, его коллизия работает только для запросов. При этом объект будет пересекаться со всеми другими объектами, вызывая события при пересечении (если включена соответствующая настройка), и не будет блокировать их, кроме канала Trace Visibility, его он будет игнорировать. Часто применяется для триггерных объемов (Trigger Volume).
  • Ragdoll — объекту назначается тип Physics Body (физическое тело), его коллизия полностью включена. При этом он будет блокировать все другие типы объектов, кроме типа Pawn и канала Trace Visibility, их он будет игнорировать. Обычно используется для объектов персонажей в определённый момент, когда необходима имитация физики тела.
  • Vehicle — объекту назначается тип Vehicle, его коллизия полностью включена. При этом он будет блокировать все другие Object Type. Обычно используется для объектов транспортных средств.
  • UI — объекту назначается тип World Dynamic, его коллизия работает только для запросов. При этом объект будет пересекаться со всеми другими объектами, вызывая события при пересечении (если включена соответствующая настройка), и не будет блокировать их, кроме канала Trace Visibility, его он будет блокировать. Обычно используется для объектов пользовательского интерфейса.

Как создать пользовательский Collision Preset

Как и в случае с каналами объектов и трассировок, в Unreal Engine также можно создавать и свои пользовательские пресеты коллизий.

Создаются Collision Preset точно также, как и каналы. Перейдите в настройки проекта Edit / Project Settings. Далее в раздел Engine / Collision. И в разделе Preset добавьте свой пользовательский пресет, нажав на кнопку New. В небольшом открывшемся окошке New Profile укажите Name (название пресета), Collision Enabled (режим работы коллизии), Object Type (тип объекта), Description (описание Вашего пресета) и Response (ответы Block, Overlap или Ignore) для каждого из типов объектов. Там же, в разделе Preset, находятся все дефолтные пресеты, встроенные в движок. Нажав на каждый из которых, Вы можете внести в них правки. Но лучше, конечно, в дефолтные пресеты изменений никаких не вводить.

Как в Unreal Engine создать пользовательский Collision Preset (Profile)
Как в Unreal Engine создать пользовательский Collision Preset (Profile)

Стандартные Blueprint-функции для работы с коллизией

Set функции (сеттеры)

Set функции (сеттеры) для работы с коллизией
Set функции (сеттеры) для работы с коллизией
  • Set Collision Enabled — включает/выключает коллизию, устанавливает тип режима работы коллизии (No Collision, Query Only, Physics Only, Collision Enabled (Query and Physics), Probe Only, Query and Probe).
  • Set Collision Profile Name — устанавливает новый пресет (профиль) коллизии для текущего компонента. Опцией Update Overlap даёт возможность обновить пересечения в соответствии с правилами нового пресета.
  • Set Collision Object Type — устанавливает для текущего компонента новый канал объекта коллизии (World Static, World Dynamic, Pawn, Physics Body, Vehicle, Destructible или другой пользовательский канал).
  • Set Collision Response to Channel — устанавливает для текущего компонента по конкретному каналу объекта коллизии (World Static, World Dynamic, Pawn, Physics Body, Vehicle, Destructible или другой пользовательский канал) новую ответную реакцию (Block, Overlap, Ignore).
  • Set Collision Response to All Channel — устанавливает для текущего компонента по всем каналам коллизии новую ответную реакцию (Block, Overlap, Ignore).

Get функции (геттеры)

Get функции (геттеры) для работы с коллизией
Get функции (геттеры) для работы с коллизией
  • Get Collision Enabled — возвращает режим работы коллизии текущего компонента.
  • Get Collision Profile Name — возвращает название пресета (профиля) коллизии для текущего компонента.
  • Get Collision Response to Channel — возвращает тип ответной реакции текущего компонента по выбранному каналу коллизии.
  • Get Collision Object Type — возвращает тип объекта коллизии текущего компонента.

Is функции

Is функции для работы с коллизией
Is функции для работы с коллизией
  • Is Query Collision Enabled — возвращает информацию, включена ли у текущего компонента коллизия для запросов.
  • Is Physics Collision Enabled — возвращает информацию, включена ли у текущего компонента коллизия для физической симуляции.
  • Is Collision Enabled — возвращает информацию, включена ли у текущего компонента коллизия (запросы или физика).

На этом наша статья завершается. Мы рассмотрели коллизии игрового движка Анрил Энджин (UE4 и UE5). Типы коллизий, каналы объектов и трассировки, а также ответные реакции на столкновения и пресеты коллизий.

Оцените статью
( 2 оценки, среднее 5 из 5 )
Unreal Engine - это просто
Добавить комментарий

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