Unreal EngineФорумФизика

Есть ли гарантированное определение столкновений в Unreal?

#0
19:50, 28 окт 2023

Добрый день!

Не работает коллизия если:

1. Объект маленький например пуля
2. Движется быстро например со скоростью свыше 3500 условных единиц.
3. Низкий FPS (если включены высокие настройки и FPS ниже 60)

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

То есть unreal не гарантирует исполнение коллизий в принципе?
Или есть способ все таки рассчитать физику для небольших объектов?

Не очень понятно как правильно решить проблему:

Вижу такие варианты:
1. Увеличивать коллайдер самой пули в размере. Например сделать цилиндр длинный который точно попадет в кадр. Но получается коллайдер не соответствует по размерам как сам объект. То есть коллайдер в 10 раз длиннее пули получится.
2. Изменять настройки физики в проекте (solver). Но какие непонятно и помогут ли они точнее вычислять физику?
3. Снижать скорость движения объектов. Будет выглядеть нереалистично. Звук выстрела есть, а попадание происходит через секунду только.
4. Вместо hit и overlap событий делать raycast и самостоятельно рассчитывать попадания.

#1
22:07, 28 окт 2023

4 вариант думаю оптимальный, есть ещё вариант асинхронной физики, была настройка задающая частоту просчёт физики не помню с какой версии то ли с 5 то ли с 5.1
Но для столь быстрых объектов вряд ли хорошая идея.

#2
1:36, 29 окт 2023

Если на шаге, который предшествовал столкновению, расстояние было очень большим, то объекты не были в паре, для которой просчитывается пересечение.

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

Изображение
#3
2:02, 29 окт 2023

Все делают рей каст

#4
10:02, 29 окт 2023

inc_ani
У каждого боеприпаса в полете?
Или в момент выстрела?

Я бы хотел чтобы расчет был по боеприпасу. То есть боеприс летит по любой траектории и при столкновении с противником наносится урон. Он может крутится в разные стороны. Или так нереально делать из-за самого физического движка в unreal?

#5
11:34, 29 окт 2023

Кидаешь луч от позиции пули в прошлом кадре до текущей позиции. Если есть коллизия, откидывании пулю до координаты пересечения луча

#6
21:57, 31 окт 2023

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

#7
11:33, 1 ноя 2023

IGamedevStudio
а какая разница дуга или нет?  трейс идет от А(предыдущий кадр) до Б(текущий кадр) расстояние небольшое.
я тоже так делал, но для стрел, и одиночных прожектайлов.

#8
11:46, 1 ноя 2023

Есть возможность сделать трейс по баллистической траектории
https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Game/Predic… ByTraceChan-/

#9
12:59, 1 ноя 2023

DuDuDuJ
> а какая разница дуга или нет?  трейс идет от А(предыдущий кадр) до Б(текущий
> кадр) расстояние небольшое.
Разумное решение, позиции между кадрами все равно не известны и если нет задачи сбить одну пулю другой, то можно считать что целевой обьект не двигался с предыдущего кадра.
Конечно если хочется сбивать другие пули или попасть в глаз кролику бегущему со скоростью звука, то находим все обьекты которые попадают в зону поражения пули за кадр и дополнительно их симмулируем с большей частотой.

Unreal EngineФорумФизика

Тема в архиве.