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

Ручно установленное моделирование физики

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

Ручное управление физическим моделированием для:

  • Обеспечение стабильности и последовательности: Физико-математические системы разработаны для небольших, последовательных временных шагов. Переменные значения временных шагов, такие как Time.deltaTime, могут вызвать нестабильность моделирования и привести к таким проблемам, как прохождение объектов друг через друга, явление, известное как туннелирование, при низких частотах кадров или тревожное поведение при колебании частоты кадров.
  • Создание воспроизводимого поведения: Использование фиксированного шага крайне важно для более воспроизводимого поведения физики (хотя истинный детерминизм с PhysX имеет другие проблемы).
  • Избегайте больших, неточных шагов: если частота кадров падает, Time.deltaTime увеличивается. Моделирование физического шага с большой, переменной дельтой может быть вычислительно ресурсоемким и менее точным, потенциально усугубляя проблемы производительности.

Используйте Physics.Simulate(float stepTime) (или yourPhysicsScene.Simulate(float stepTime)) для ручного управления физическим моделированием и в конкретных, локальных PhysicsScene случаях. Обратитесь к Обучающий материал по физике в нескольких сценах, чтобы узнать больше о многосценной физике.

При вызове Physics.Simulateрекомендуется использовать фиксированный шаг времени, а не напрямую передавать Time.deltaTime. Например, используйте то же значение, которое можно использовать в Project НастройкиФиксированный шаг времени, например 0.02 для 50 Гц.

Если вы вручную симулируете физику в сцене с помощью Physics.Simulate(), убедитесь, что автоматическое симулирование отключено. Вы можете сделать это, установив Режим моделирования на Скрипт. В режиме Скрипт (либо через Project Настройки или скрипт), вы должны вызвать Physics.Simulate для сцены на выбранной частоте с соответствующим, предпочтительно фиксированным, шагом времени.

Чтобы отключить автоматическое моделирование, в Редакторе:

  1. Выберите Изменить > Project Настройки, чтобы открыть окно Настройки Project.
  2. Выберите вкладку Physics > Settings.
  3. Выберите вкладку GameObject.
  4. Установите Режим симулирования на Сценарий.

Чтобы отключить автоматическую симуляцию, в скрипте установите Physics.simulationMode = SimulationMode.Script;. Обычно, вы делаете это в начале вашей игры, до того, как произойдет какая-либо физика симулирования.

Дополнительные ресурсы