Rigidbody - это основной компонент, подключающий физическое поведение для объекта. С прикреплённым Rigidbody, объект немедленно начнёт реагировать на гравитацию. Если добавлен один или несколько компонентов Collider, то при коллизиях (столкновениях) объект будет передвигаться.
Так как компонент Rigidbody управляет перемещением объекта, к которому он прикреплён, вам не следует пытаться воздействовать на объект из кода с помощью изменения таких свойств Transform, как position и rotation. Вместо этого вам следует применять силы для того, чтобы толкать объект и позволить физическому движку рассчитать результаты.
Существуют случаи, при которых вы можете захотеть, чтобы у объекты был Rigidbody, но физический движок не управлял его движением. Например, вы можете пожелать управлять своим персонажем напрямую из кода, но при этом хотите, чтобы он взаимодействовал с триггерами (см. Триггеры ниже). Этот тип не физического движения, производимый с помощью кода, называется кинематическим движением. У компонента Rigidbody есть свойство Is Kinematic, которое может исключить объект из-под контроля физического движка, и позволить перемещать его кинематически из скрипта. Значение Is Kinematic можно менять из кода, чтобы включать или отключать физику для объекта, но эта возможность требует дополнительных ресурсов и должна использоваться как можно реже.
См. страницы справки по Rigidbody и Rigidbody 2D для дополнительной информации о настройках и опциях по скриптингу этих компонентов.
Когда твёрдое тело перемещается со скоростью, меньшей определённого минимального порога, физический движок предполагает, что оно остановилось и находится в покое. При этом, объект не будет вновь двигаться до тех пор, пока с ним не произойдёт столкновение или пока к нему не применят силу, так что он уходит в “спящий” режим. Эта оптимизация означает, что на объект не будут расходоваться ресурсы CPU, пока его вновь не “разбудят” (т.е. не вновь не приведут в движение). По многим причинам засыпание и пробуждение твёрдых тел происходит прозрачно. Однако, иногда объект не удаётся разбудить, если в него или от него переместится статичный коллайдер (тот, что без твёрдого тела) изменяя положение трансформации. Это может привести, скажем, к висящему в воздухе твёрдому телу, когда пол под ним сдвинулся вниз. В таких случаях объект можно разбудить принудительно, с помощью функции WakeUp
. См. страницы про компоненты Rigidbody и Rigidbody 2D для дополнительной информации о засыпании.