Объявление
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);
}
// Здесь вы можете получить доступ к состоянию преобразований сразу после моделирования, если это необходимо
}
}