Физика
Физика Для 3D-проектов Unity использует движок NVIDIA PhysX, а для 2D-проектов отдельный двумерный движок. Встроенная физическая система Unity предоставляет стандартные отраслевые решения для взаимодействия Rigidbody, соединений и сил. Методы Physics API позволяют выполнять трассировку лучей и объёмов, проверять пересечения, а также обрабатывать триггеры и столкновения. 3D-физик а Встроенный физический движок Unity включает в себя несколько полезных компонентов: - Rigidbody позволяет физической системе управлять движением объекта. На Rigidbody действует сила тяжести, а доступные методы позволяют прикладывать к нему силу или крутящий момент. Если компонент Collider активен, соответствующий GameObject реагирует на физические столкновения. - Компоненты Collider (Box Collider, Sphere Collider, Capsule Collider и Mesh Collider) представляют примитивные объёмы или объёмы мешей, задающие границы физических столкновений. - Компоненты Joint (Fixed Joint, Hinge Joint, Spring Joint и Character Joint) позволяют соединять два компонента Rigidbody и моделировать различные ограничения движения: разрушаемое соединение, вращение вокруг одной оси, упругое соединение, шаровой шарнир и т. п. - CharacterController позволяет управлять движением с учётом столкновений без использования Rigidbody.
Компонент Rigidbody поддерживает спекулятивный и основанный на sweep-проверке режимы непрерывного обнаружения столкновений для быстро движущихся объектов. Используйте несколько физических сцен для управления сложными физическими контекстами или обхода их ограничений. Например, можно моделировать несколько физических сцен, чтобы прогнозировать столкновения и траектории объектов GameObject.
Используйте несколько сцен для прогнозирования столкновений и траекторий.
Unity также предоставляет окно Debug Visualization (Window > Analysis > Physics Debugger). В нём можно раскрашивать физические компоненты по категориям и включать или отключать их отображение. Это помогает быстро диагностировать проблемы с Collider и другие физические сценарии в сцене.
Окно Physics Debugger
Обновляйте физику в методе MonoBehaviour.FixedUpdate, который вызывается через фиксированные интервалы времени. Класс Physics содержит статические методы для физических взаимодействий. Кроме того, класс Collider предоставляет события для обработки столкновений и триггеров. Ниже перечислены методы, часто используемые при работе с физикой.
Классы и методы
Описание
MonoBehaviour.FixedUpdate
Обновляет физические расчёты с фиксированной частотой, задаваемой в Edit > Settings > Time > Fixed Timestep.
Physics.Raycast, Physics.Linecast, Physics.BoxCast, Physics.CapsuleCast, Physics.SphereCast
Проверяют пересечение Collider с лучом, линией или объёмом.
Physics.OverlapBox, Physics.OverlapSphere, Physics.OverlapCapsule
Проверяют, находится ли Collider внутри заданного объёма.
Collider.OnCollisionEnter, Collider.OnCollisionStay, Collider.OnCollisionExit
События начала, продолжения и завершения контакта Collider.
Collider.OnTriggerEnter, Collider.OnTriggerStay, Collider.OnTriggerExit
События триггера при начале, продолжении и завершении контакта; физического столкновения не создают.
2D-физика В Unity есть отдельный физический движок, оптимизированный для 2D-физики. Большинство её компонентов - двумерные аналоги компонентов 3D-физики. К именам соответствующих компонентов добавлено «2D»: например, Physics2D, Rigidbody2D, Collider2D, Joint2D и т. п. В остальном они ведут себя так же, как аналогичные 3D-классы. Загрузите проект PhysicsExamples2D с примерами применения и посмотрите сопутствующее вводное видео. Подробнее о встроенной реализации 3D- и 2D-физики читайте в документации Physics. Советы по оптимизации 3D-физики и её настроек приведены в видео Physics Performance Optimization.