Un Rigidbody es el componente principal que permite el comportamiento físico para un objeto. Con un Rigidbody adjunto, el objeto inmediatamente responderá a la gravedad. Si uno o más componentes Collider son también agregados entonces el objeto será movido por colisiones entrantes.
Debido a que un componente Rigidbody asume el movimiento del objeto el cual está adjunto, usted no debería intentar moverlo desde un script cambiando las propiedades del Transform como lo son la posición y rotación. En vez, usted debería aplicar forces para empujar el objeto y permitirle al motor de física calcular los resultados.
Hay algunos casos en los que es posible que desee que un GameObject tenga un Rigidbody sin que el motor de física controle su movimiento. Por ejemplo, es posible que desee controlar su carácter directamente desde el código, pero aún así permitir que lo detecten los desencadenantes (consulte Triggers en el tema Colliders). Este tipo de movimiento no físico producido a partir de un script se conoce como movimiento kinematic. El componente Rigidbody tiene una propiedad llamada Is Kinematic que lo elimina del control del motor de física y permite que se mueva de forma cinemática desde un script. Es posible cambiar el valor de Is Kinematic desde un script para permitir que la física se active y desactive para un objeto, pero esto conlleva una sobrecarga de rendimiento y se debe utilizar con moderación.
Consulte las páginas de referencia de Rigidbody y Rigidbody 2D para obtener más detalles sobre la configuración y las opciones de secuencias de comandos para estos componentes.
Cuando un Rigidbody se mueve más lento que una velocidad lineal o de rotación mínima definida, el motor de física asume que se ha detenido. Cuando esto sucede, el GameObject no se mueve de nuevo hasta que recibe una colisión o fuerza y, por lo tanto, se configura en modo “sleeping”. Esta optimización significa que no se dedica tiempo de procesador a actualizar el Rigidbody hasta la próxima vez que se “despierte” (es decir, se pone en movimiento de nuevo).
Una vez un rigidbody se esté moviendo menos que una cierta cantidad minima lineal, o velocidad de rotación, el motor de física asumirá que ha parado. Cuando esto suceda, el objeto no se moverá más hasta que reciba una colisión o fuerza y por lo tanto se configurará al modo “sleeping”. Esta optimización significa que ningún tiempo de procesamiento será gastado actualizando el rigidbody hasta la próxima vez que se “despierte” (ie, configurado en movimiento nuevamente). Para la mayoría de propósitos, el adormecimiento y la despertada de los rigidbodies suceden transparentemente. Sin embargo, un objeto podría fallar despertarse si un collider estático (ie, uno sin un rigidbody) sea movido hacia el interior o hacia afuera modificando la posición del transform. Esto puede resulta, digamons, en que el objeto del rigidbody se mantenga en el aire cuando el piso se ha movido debajo de él. En casos como éste, el objeto puede ser despertado de manera explícita utilizando la función WakeUp
. Vea las páginas de componente Rigidbody y Rigidbody 2D para más información acerca de dormir.