Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

Physics2D.useSubStepping

Declaration

public static bool useSubStepping;

Описание

Использовать ли подшаговое моделирование во время этапа моделирования.

Когда симуляция настроена на запуск по кадрам путем установки Physics2D.simulationMode на Update или Script, эта опция будет контролировать, может ли использоваться суб-шаг симулирования.

При низкой частоте кадров симуляция выполняется с большими шагами по времени. Это снижает её точность. Если частота кадров становится слишком низкой, симуляция начинает разваливаться: сочленения ведут себя совершенно неправильно, возникают очень большие импульсы, а твёрдые тела двигаются хаотично. Такую ситуацию называют «взрывом симуляции»: симуляция фактически оказывается в состоянии отказа, из которого часто невозможно выйти без перезагрузки сцены, то есть без сброса состояния физической сцены. Разумеется, этого следует избегать.

Чтобы избежать этой ситуации, можно использовать суб-шаг симулирования. Это достигается путем мониторинга, если частота кадров уменьшилась ниже указанного порога, контролируемого Physics2D.minSubStepFPS. Если она не уменьшилась ниже этого порога, то будет выполнен нормальный шаг симулирования. Однако, если она уменьшилась ниже этого порога, то система физики выполнит суб-шаг. Суб-шаг работает путем разделения текущей частоты кадров delta-time на несколько под-шагов, каждый с более высокой частотой. Это обеспечивает, что физика всегда симулируется с частотой, равной или выше указанной Physics2D.minSubStepFPS. Это эффективно гарантирует стабильную симуляцию.

Наказание за использование этой функции заключается в том, что суб-шаг (когда вышеуказанный порог был превышен) имеет дополнительные CPU затраты в связи с тем, что симуляцию запускают несколько раз, хотя это можно уменьшить, не рассчитывая контакты для всех под-шагов, как это контролируется Physics2D.useSubStepContacts. Стоимость этого следует контролировать с помощью Unity Profiler с помощью Физики 2D Модуль.

Порог контролируется Physics2D.minSubStepFPS и максимальное количество под-шагов разрешено контролируется Physics2D.maxSubStepCount.

Дополнительные ресурсы: Physics2D.maxSubStepCount, Physics2D.minSubStepFPS, PhysicsScene2D.subStepCount и PhysicsScene2D.subStepLostTime.