Rigidbody - это основной компонент, подключающий физическое поведение для объекта. С прикреплённым Rigidbody, объект немедленно начнёт реагировать на гравитацию. Если добавлен один или несколько компонентов Collider, то при коллизиях (столкновениях) объект будет передвигаться.
Так как компонент Rigidbody управляет перемещением объекта, к которому он прикреплён, вам не следует пытаться воздействовать на объект из кода с помощью изменения таких свойств Transform, как position и rotation. Вместо этого вам следует применять силы для того, чтобы толкать объект и позволить физическому движку рассчитать результаты.
There are some cases where you might want a GameObject to have a Rigidbody without having its motion controlled by the physics engine. For example, you may want to control your character directly from script code but still allow it to be detected by triggers (see Triggers under the Colliders topic). This kind of non-physical motion produced from a script is known as kinematic motion. The Rigidbody component has a property called Is Kinematic which removes it from the control of the physics engine and allow it to be moved kinematically from a script. It is possible to change the value of Is Kinematic from a script to allow physics to be switched on and off for an object, but this comes with a performance overhead and should be used sparingly.
См. страницы справки по Rigidbody и Rigidbody 2D для дополнительной информации о настройках и опциях по скриптингу этих компонентов.
When a Rigidbody is moving slower than a defined minimum linear or rotational speed, the physics engine assumes it has come to a halt. When this happens, the GameObject does not move again until it receives a collision or force, and so it is set to “sleeping” mode. This optimisation means that no processor time is spent updating the Rigidbody until the next time it is “awoken” (that is, set in motion again).
Когда твёрдое тело перемещается со скоростью, меньшей определённого минимального порога, физический движок предполагает, что оно остановилось и находится в покое. При этом, объект не будет вновь двигаться до тех пор, пока с ним не произойдёт столкновение или пока к нему не применят силу, так что он уходит в “спящий” режим. Эта оптимизация означает, что на объект не будут расходоваться ресурсы CPU, пока его вновь не “разбудят” (т.е. не вновь не приведут в движение). По многим причинам засыпание и пробуждение твёрдых тел происходит прозрачно. Однако, иногда объект не удаётся разбудить, если в него или от него переместится статичный коллайдер (тот, что без твёрдого тела) изменяя положение трансформации. Это может привести, скажем, к висящему в воздухе твёрдому телу, когда пол под ним сдвинулся вниз. В таких случаях объект можно разбудить принудительно, с помощью функции WakeUp
. См. страницы про компоненты Rigidbody и Rigidbody 2D для дополнительной информации о засыпании.