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

Объявление

public bool Simulate(float step);

Параметры

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

Возвращает

bool Была ли запущена симуляция или нет. Запуск симуляции во время обратных вызовов физики всегда завершается ошибкой.

Описание

Смоделируйте физику, связанную с этой PhysicsScene.

При вызове этого метода физика моделируется в течение заданного шага времени. Будет смоделирована только физика, связанная с этим PhysicsScene2D. Если эта PhysicsScene2D не является физической сценой по умолчанию (см. Physics2D.defaultPhysicsScene), то она связана с определенной Scene, поэтому при запуске имитации затрагиваются только компоненты, добавленные в эту Scene.

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

Вы можете вызвать PhysicsScene2D.Simulate в редакторе вне игрового режима, однако рекомендуется соблюдать осторожность, так как это приведет к перемещению игровых объектов, к которым прикреплен Rigidbody2D. При симуляции в Редакторе вне режима игры происходит полная симуляция всех физических компонентов, включая Rigidbody2D, Collider2D, Joint2D и Effector2D, и создаются контакты. Однако о контактах не сообщается через стандартные обратные вызовы скрипта. Это мера безопасности, предотвращающая удаление объектов в сцене обратными вызовами, что не является отменяемой операцией.

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