Полезное

Мы Вконтакте

Реакция на столкновения

Добавлено Мар 29 2016
Столкновения

Collision Responses и Trace Responses формируют основу того, как Unreal Engine 4 обрабатывает столкновения и рей кастинг (ray casting) запросы время выполнения.
Каждый объект, который может столкнуться получает Object Type и ряд параметров, которые определяют, как он будет взаимодействовать с другими типами объектов.
При столкновении или перекрытии объектов могут генерироваться события, каждому из объектов можно настроить параметры влияния на другие типы объектов, будут ли они сталкиваться или игнорировать друг друга.

Trace Responses работают в основном так же. Трейс сам по себе может быть определен как один из типов объектов, позволяя другим объектам на основе своих настроек либо блокировать либо игнорировать его.

Взаимодействия

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

  • Блокировка (Blocking) будет происходить естественным образом между двумя (или более) объектами с заданными параметрами блокировки.
    Тем не менее, для выполнения Event Hit событий должен быть включен Hit Event, который используется в блупринтах, разрушаемых объектах, триггерах и т.д…
  • Объекты с параметром Overlap часто выглядят как объекты с параметром Ignore, и без Event Hit, они по существу одинаковы.
  • Для двух (или более) объектов блокирующих друг друга, у обоих должны быть выставлены соответствующее настройки.
  • Для двух или более объектов: если параметры одного установлены в Blocking, а второго в Overlap, то будет происходить только Overlap (перекрытие) но не блокирование объектами друг друга.
  • Overlap события могут быть сгенерированы даже если объект блокирует другой, особенно при движении на высоких скоростях.
    • Не рекомендуется использовать одновременно как Blocking так и Overlap параметры. Хотя конечно это возможно, может потребоваться ручная настройка.
  • Если один объект установлен в Ignore, а другой в Overlap, объекты будут игнорировать друг друга а так же не будут генерироваться Overlap эвенты.

Для целей тестирования уровней:

  • По умолчанию камера при игре в редакторе является типом Pawn.
  • По умолчанию камера в Simulate режиме не является типом Pawn. Она может свободно проходить через все и не будет генерировать каких-либо столкновений или событий.

Примеры взаимодействий

Эти примеры предполагают, что все объекты имеют включенным пункт Collision Enabled. Если столкновение отключено, это как если бы Ignore был установлен для всех Collision запросов.

Поясним что происходит, дабы вы без труда поняли что происходит в следующем разделе:
Изначальное положение
Сфера является PhysicsBody а стена World Dynamic, путем изменения их параметров столкновений мы будем получать различное поведение.

Столкновения

Установите оба объекта в режим Blocking, чтобы они блокировали друг друга, вы получите столкновение, вот так объекты взаимодействуют друг с другом:
Столкновение

Сфера Стена
Сфера Стена
В этом случае сфера является PhysicsBody и она настроена, чтобы блокировать World Dynamic (тот же тип что и стена). Стена является World Dynamic и должна блокировать PhysicsBody объекты (сферу).

В этом случае сфера и стена просто сталкиваются, никаких дополнительных уведомлений о столкновении будет.

Столкновения и формирование Hit Event

Простое столкновение полезно и само по себе — голый минимум для физических взаимодействий. Однако если вы хотите что-то сообщить при столкновении объектов то:
Генерация события

Сфера Стена
Сфера Стена
Как и в приведенном выше примере, сфера является PhysicsBody и она настроена, чтобы блокировать World Dynamic (которым является стена).
Однако сфера также может формировать Event Hit события, так что будем инициировать эвент всякий раз, когда она сталкивается с чем-то.
Стена является World Dynamic и настраивается на блокирование PhysicsBody объектов (тот же тип что и у сферы).
Поскольку у стены не установлен флажок Simulation Generates Hit Events, она не будет генерировать ни каких событий при столкновении с собой.

Поскольку у сферы включен параметр Simulation Generates Hit Events, она будет генерировать события каждый раз при столкновении с собой.
Кроме того, объект, который сообщает о жестких столкновениях будет сообщать о них так же, когда он просто лежит на чем-то, так что лучше быть осторожным, нужно отделять полезные сообщения от “спама”.

Overlap и Ignore

Во всех прочих случаях когда включены флаги Overlap или Ignore, но выключен флаг Simulation Generates Hit Events, сфера просто будет игнорировать стену:
Игнорирование

Сфера Стена
Сфера Стена
Здесь у сферы включен Overlap для World Dynamic (как наша стена), но отключен параметр Simulation Generates Hit Events.
По этому сфера будет игнорировать стену не генерирую при этом ни каких событий.
Стена является World Dynamic и настраивается на блокирование PhysicsBody объектов (тот же тип что и у сферы).
Как было указано выше, оба объекта должны иметь настройку Blocking, чтобы блокировать соответствующие типы объектов. Если этого не сделать, они не будут сталкиваться.

Или:

Сфера Стена
Сфера Стена
Здесь сфере устанавливается Ignore для World Dynamic (как стена), и она будет проходить через стену. Стена имеет тип World Dynamic и блокирует PhysicsBody объекты. Как было указано выше, оба объекта должны иметь настройку Blocking, чтобы блокировать соответствующие типы объектов.
Если этого не сделать, они не будут сталкиваться.

Overlap и формирование Hit Event

В отличие от столкновений, которые могут срабатывать каждый кадр, Overlap эвенты ReceiveBeginOverlap и ReceiveEndOverlap, срабатывают только в этих конкретных случаях:
Генерация события

Сфера Стена
Сфера Стена
Здесь сфере устанавливается параметр Overlap для World Dynamic объектов (как стена), и она будет генерировать события, каждый раз когда она что-то перекрывает. Стена является World Dynamic и настраивается на блокирование PhysicsBody объектов (тот же тип что и у сферы). Как было указано выше, оба объекта должны иметь настройку Blocking,
чтобы блокировать соответствующие типы объектов. Если этого не сделать, они не будут сталкиваться. Но, здесь сфера проходит через стену и срабатывает эвент.
Добавил: Flakky Категория: Симуляция физики


Комментарии

На данный момент комментарии отключены.

cron
UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница