Unreal engine как убрать прохождение сквозь дверь

Обновлено: 30.04.2024

Вот что откопал:
Реакция на столкновения
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 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 параметры. Хотя конечно это возможно, может потребоваться ручная настройка.

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

    • По умолчанию камера при игре в редакторе является типом 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, она не будет генерировать ни каких событий при столкновении с собой.

    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, срабатывают только в этих конкретных случаях:


    Есть проблема такая, у меня дверь, но есть проблема, когда включена на ней коллизия, я не могу полностью пройти через неё, вхожу на пол тела и "упираюсь" в пустоту, меееееедленно щемлюсь вперёд и прохоу наконец-то.

    Когда коллизия выключена, я прохожу как сыр в масле, легко без проблем.

    Как сделать так, что бы у Рамы двери была коллизия но игнорировала игрока.

    Просто у меня сама дверь, подвешена на физ.точки к раме и сама закрывается по блюпринту, но когда я у рамы отключаю коллизию, дверь не закрывается, а вращается сам-по-себе.

    Изображение

    Изображение

    Изображение

    Изображение

    Этот скрин, что бы показать размер прохода по отношению к размеру персонажа. Как видно, проход огромный.


    Последний раз редактировалось sergeysk2 13 май 2017, 17:57, всего редактировалось 1 раз.

    Пользователь

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

    Изображение

    Пользователь

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

    Изображение

    Ок, я отключил реагирование на игрока спавна, тепер проходит свободно, НО перестала автоматом закрываться дверь! Она теперь просто по физике висит и шатается на распашку. . а когда включаешь обратно у рамы реагирование на игрока, то опять игрок не проходит, но зато дверь автоматом закрывается.

    Вот видео:

    Ярослав Сафронов

    Самый топовый вопрос надпись в левом верхнем углу "Light Need to Rebuild" а также же надпись Preview на объектах. Как это убрать?

    Примечание: это также относится к полосам на ландшафте.

    Ответ: два способа

    1 способ. Нажать возле кнопки Build дополнительную стрелку и выбрать Build Lighting Only. Это пересчитает статический свет и может занять довольно большое время, в зависимости от мощности компа/ноута, величины и сложности освещения в проекте.
    + данного метода: только один - запечённый свет.
    - данного метода, нужно делать билд каждый раз как что-нибудь добавите на сцену или просто передвинете.
    - увеличивает размер проекта.

    2 способ. Найти все источники света на сцене и переключить параметр Mobility на Movable.
    + данного метода. Полностью избавляет от необходимости билдить освещение.
    - данного метода. Не подходит для мобильных платформ. Гораздо больше требует ресурсов на расчёт освещения в реальном времени.
    Примечание: при использовании 2 способа. Один раз всё равно нужно сбилдить освещение чтобы избавиться от статических теней оставшихся например от передвинутого в сторону стула.

    Ярослав Сафронов

    Второй топовый вопрос. Почему когда смотришь в темноту становится светлее, почему ландшафт сильно засвечивается когда на него смотришь?
    Ответ: Это Автоэкспозиция. Адаптация глаз персонажа к свету. В большинстве случаев эта опция только мешает.
    Чтобы её отключить нужно зайти в Project Settings -> Rendering -> Найти опцию Auto Exposure и выключить её. После этого засвечивание пропадёт. А в темноте будет действительно темно. Либо же можно переключить с Histogram на Basic. И тогда засвечивание будет почти не заметно.

    Ярослав Сафронов

    Ну и третий топовый вопрос. Почему на стенах при движениях заметны шлейфы от персонажа и графика замыливается при движении?
    Ответ. Это опция Motion Blur. В большинстве случаев эта опция только мешает.
    Чтобы её отключить нужно зайти в Project Settings -> Rendering -> Найти опцию Motion Blur и выключить её.

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

    Ярослав Сафронов

    Имеется два меша, персонаж и его одежда, оба завязаны на общий скелет. Проблема в том что когда пытаюсь анимировать оба меша, то анимация работает не синхронно. Как можно правильно синхронизировать анимации для персонажа и его одежды?

    Ответ: Для этого используется нода Set Master Pose. Вот несколько пунктов, которые нужно знать чтобы выполнить правильную синхронизацию анимаций:
    1. Анимация должна быть только на основном меше (т.е на персонаже должна быть анимация, а на одежде нет).
    2. Подключать ноду Set Master Pose на Тик не нужно. Она должна сработать один раз и этого будет достаточно. Применяйте её на Begin Play.
    3. На ноду нужно подключать сначала меш (одежда) на который нужно передать анимацию, а на второй вход подключить основной меш (персонаж).
    4. Иногда у второго меша (одежда) могут возникнуть проблемы с физикой. В таком случае рекомендуется выключать коллизию у этого меша или настроить коллизию так чтобы она игнорировала коллизию персонажа.

    Паша Домосед

    Ярослав, А если, к примеру, у меня есть два актора с одинаковым набором костей, и анимация у одного из них. Как мне применить ту же анимацию ко второму актору?

    Ярослав Сафронов

    Ярослав Сафронов

    При спавне ИИ стоят на месте или висят в воздухе и не двигаются, что это может быть?

    Ответ. По умолчанию во всех Character или Pawn установлена опция "Auto Possess AI" в режим "Placed in World".

    Поменяйте режим на "Spawned" или лучше на универсальный режим "Placed in World or Spawned" и тода с ИИ будет всё в порядке.

    1. Placed in World (по умолчанию) - Вселять ИИ контроллер в бота, только если бот вынесен на сцену. Естественно ИИ не будет вселятся в заспавненного бота.

    2. Spawned - Вселять контроллер только в заспавненного бота. Естественно ИИ не будет вселятся если бот вынесен на сцену.

    3. Placed in World or Spawned (рекомендуется) - ИИ контроллер будет вселятся в бота в любом случае.

    Евгений, Я просто давно уже с этой проблемой бьюсь: у Меня реалистичное первое лицо (игрок видит ноги), слышал
    что нужно добавить к камере спринг арм - добавил и сферическую коллизию на камеру поставил с параметрами коллизии Overlap All Dynamic, пробовал ставить Block All и всё равно проблема осталась

    Влад Головлёв

    DELETED

    Владимир Тихонов


    Владимир Тихонов ответил DELETED

    DELETED

    Владимир Тихонов


    Владимир Тихонов ответил DELETED

    Александр Сусанин

    Владимир Тихонов


    Владимир Тихонов ответил Александру

    Михаил Незнамов

    Александр, глупый вопрос - но нафига вообще нужен Spring Arm в данном случае?
    Разве нельзя привязать камеру к сокету головы и просто в анимблупринте делать bone transform кости головы согласно инпуту?

    Александр Сусанин

    Михаил Незнамов

    Александр Сусанин

    Михаил, и кст согласно какому инпуты. Ты хочешь сделать условный тригер чтобы постоянно была проверка со всех сторон, не касается ли голова стен?

    Александр Сусанин

    Михаил, Ради такой мелочи делать тикающий код не есть хорошо. По этому ты тут не прав. Тут должно быть куда более простое решение, которое просто будет блокировать камеру при получениее колизии с чем либо.

    Михаил Незнамов

    Александр, можно просто сделать капсулу персонажа пошире, чтобы игрок не мог головой влазить в стены. Или не?)

    Александр Сусанин

    Владимир Тихонов


    Владимир Тихонов ответил Михаилу

    Михаил, тут таких кишмя кишит. Более того, еще и стримеры появились, которые не стесняясь говнокодят и все довольны)))

    Михаил Незнамов

    Pablo, есть такая тенденция, что сейчас стримы в большинстве случаев проводят не ради, собственно, стримов, а ради получения доната.
    Как кто-то сказал: сидишь веселишься и за это ещё платят..

    Владимир Тихонов


    Владимир Тихонов ответил Михаилу

    DELETED

    Михаил, голова крутится и камера к кости головы привязана. И кстати твоя идея с увеличением радиуса капсулы Мне помогла. Спасибо

    Михаил Незнамов

    Pablo, что срут в головы какие-то ноунеймы на твиче - это не такая уж беда.
    Беда - это когда маленьким детишкам в школах срут в головы ( про существование господа в учебниках по биологии, про искажение фактов в учебниках истории, преподавание религиоведения и прививание религии в целом). Ну и еще под "срут в головы" подпадают все СМИ, начиная от сельской газетёнки и заканчивая гос.каналами в зомбоящике.
    Простите за оффтоп.

    Читайте также: