Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Physics.Simulate

Объявление

public static void Simulate(float step);

Параметры

step Время, чтобы продвинуть физику.

Описание

Смоделируйте физику в сцене.

Вызывайте этот метод, чтобы моделировать физику вручную, когда автоматическое моделирование отключено. Моделирование включает в себя все этапы обнаружения столкновений, интеграцию твердого тела и соединений, а также регистрацию физических обратных вызовов (контакт, триггер и соединения). Вызов Physics.Simulate не приводит к вызову FixedUpdate. MonoBehaviour.FixedUpdate по-прежнему будет вызываться со скоростью, определяемой Time.fixedDeltaTime, независимо от того, включено или выключено автоматическое моделирование. , и независимо от того, когда вы вызываете Physics.Simulate.

Обратите внимание, что если вы передаете значения шага, зависящие от частоты кадров (например, Time.deltaTime), в физический движок, ваша симуляция будет недетерминированной из-за непредсказуемости колебания частоты кадров, которые могут возникнуть.

Чтобы получить детерминированные результаты физики, вы должны передавать фиксированное значение шага в Physics.Simulate каждый раз, когда вы его вызываете. Обычно шаг должен быть небольшим положительным числом. Использование значений step больше 0,03 может привести к неточным результатам.

Смотрите так же: Physics.autoSimulation.

Here is an example of a basic simulation that implements what's being done in the automatic simulation mode (excluding Time.maximumDeltaTime).

using UnityEngine; public class BasicSimulation : MonoBehaviour { private float timer; void Update() { if (Physics.autoSimulation) return; // do nothing if the automatic simulation is enabled timer += Time.deltaTime; // Догоняем игровое время. // Продвижение физического моделирования частями Time.fixedDeltaTime // Обратите внимание, что обычно мы не хотим передавать переменную delta в Simulate, так как это приводит к нестабильным результатам. while (timer >= Time.fixedDeltaTime) { timer -= Time.fixedDeltaTime; Physics.Simulate(Time.fixedDeltaTime); } // Здесь вы можете получить доступ к состоянию преобразований сразу после моделирования, если это необходимо } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3