Language: English
  • C#
  • JS
  • Boo

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Rigidbody

Namespace: UnityEngine

/

Inherits from: Component

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual

Description

Control of an object's position through physics simulation.

Adding a Rigidbody component to an object will put its motion under the control of Unity's physics engine. Even without adding any code, a Rigidbody object will be pulled downward by gravity and will react to collisions with incoming objects if the right Collider component is also present.

The Rigidbody also has a scripting API that lets you apply forces to the object and control it in a physically realistic way. For example, a car's behaviour can be specified in terms of the forces applied by the wheels. Given this information, the physics engine can handle most other aspects of the car's motion, so it will accelerate realistically and respond correctly to collisions.

In a script, the FixedUpdate function is recommended as the place to apply forces and change Rigidbody settings (as opposed to Update, which is used for most other frame update tasks). The reason for this is that physics updates are carried out in measured time steps that don't coincide with the frame update. FixedUpdate is called immediately before each physics update and so any changes made there will be processed directly.

A common problem when starting out with Rigidbodies is that the game physics appears to run in "slow motion". This is actually due to the scale used for your models. The default gravity settings assume that one world unit corresponds to one metre of distance. With non-physical games, it doesn't make much difference if your models are all 100 units long but when using physics, they will be treated as very large objects. If a large scale is used for objects that are supposed to be small, they will appear to fall very slowly - the physics engine thinks they are very large objects falling over very large distances. With this in mind, be sure to keep your objects more or less at their scale in real life (so a car should be about 4 units = 4 metres, for example).

Variables

angularDrag The angular drag of the object.
angularVelocity The angular velocity vector of the rigidbody.
centerOfMass The center of mass relative to the transform's origin.
collisionDetectionMode The Rigidbody's collision detection mode.
constraints Controls which degrees of freedom are allowed for the simulation of this Rigidbody.
detectCollisions Should collision detection be enabled? (By default always enabled).
drag The drag of the object.
freezeRotation Controls whether physics will change the rotation of the object.
inertiaTensor The diagonal inertia tensor of mass relative to the center of mass.
inertiaTensorRotation The rotation of the inertia tensor.
interpolation Interpolation allows you to smooth out the effect of running physics at a fixed frame rate.
isKinematic Controls whether physics affects the rigidbody.
mass The mass of the rigidbody.
maxAngularVelocity The maximimum angular velocity of the rigidbody. (Default 7) range { 0, infinity }.
position The position of the rigidbody.
rotation The rotation of the rigdibody.
sleepAngularVelocity The angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }.
sleepVelocity The linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }.
solverIterationCount Allows you to override the solver iteration count per rigidbody.
useConeFriction Force cone friction to be used for this rigidbody.
useGravity Controls whether gravity affects this rigidbody.
velocity The velocity vector of the rigidbody.
worldCenterOfMass The center of mass of the rigidbody in world space (Read Only).

Functions

AddExplosionForce Applies a force to the rigidbody that simulates explosion effects. The explosion force will fall off linearly with distance to the rigidbody.
AddForce Adds a force to the rigidbody. As a result the rigidbody will start moving.
AddForceAtPosition Applies force at position. As a result this will apply a torque and force on the object.
AddRelativeForce Adds a force to the rigidbody relative to its coordinate system.
AddRelativeTorque Adds a torque to the rigidbody relative to the rigidbodie's own coordinate system.
AddTorque Adds a torque to the rigidbody.
ClosestPointOnBounds The closest point to the bounding box of the attached colliders.
GetPointVelocity The velocity of the rigidbody at the point worldPoint in global space.
GetRelativePointVelocity The velocity relative to the rigidbody at the point relativePoint.
IsSleeping Is the rigidbody sleeping?
MovePosition Moves the rigidbody to position.
MoveRotation Rotates the rigidbody to rotation.
SetDensity Sets the mass based on the attached colliders assuming a constant density.
Sleep Forces a rigidbody to sleep at least one frame.
SweepTest Tests if a rigidbody would collide with anything, if it was moved through the scene.
SweepTestAll Like Rigidbody.SweepTest, but returns all hits.
WakeUp Forces a rigidbody to wake up.

Messages

OnCollisionEnter OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
OnCollisionExit OnCollisionEnter is called when this collider/rigidbody has stopped touching another rigidbody/collider.
OnCollisionStay OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.

Inherited members

Variables

animation The Animation attached to this GameObject (null if there is none attached).
audio The AudioSource attached to this GameObject (null if there is none attached).
camera The Camera attached to this GameObject (null if there is none attached).
collider The Collider attached to this GameObject (null if there is none attached).
collider2D The Collider2D component attached to the object.
constantForce The ConstantForce attached to this GameObject (null if there is none attached).
gameObject The game object this component is attached to. A component is always attached to a game object.
guiText The GUIText attached to this GameObject (null if there is none attached).
guiTexture The GUITexture attached to this GameObject (Read Only). (null if there is none attached).
hingeJoint The HingeJoint attached to this GameObject (null if there is none attached).
light The Light attached to this GameObject (null if there is none attached).
networkView The NetworkView attached to this GameObject (Read Only). (null if there is none attached).
particleEmitter The ParticleEmitter attached to this GameObject (null if there is none attached).
particleSystem The ParticleSystem attached to this GameObject (null if there is none attached).
renderer The Renderer attached to this GameObject (null if there is none attached).
rigidbody The Rigidbody attached to this GameObject (null if there is none attached).
rigidbody2D The Rigidbody2D that is attached to the Component's GameObject.
tag The tag of this game object.
transform The Transform attached to this GameObject (null if there is none attached).
hideFlags Should the object be hidden, saved with the scene or modifiable by the user?
name The name of the object.

Functions

BroadcastMessage Calls the method named methodName on every MonoBehaviour in this game object or any of its children.
CompareTag Is this game object tagged with /tag/?
GetComponent Returns the component of Type type if the game object has one attached, null if it doesn't.
GetComponentInChildren Returns the component of Type type in the GameObject or any of its children using depth first search.
GetComponentInParent Returns the component of Type type in the GameObject or any of its parents.
GetComponents Returns all components of Type type in the GameObject.
GetComponentsInChildren Returns all components of Type type in the GameObject or any of its children.
GetComponentsInParent Returns all components of Type type in the GameObject or any of its parents.
SendMessage Calls the method named methodName on every MonoBehaviour in this game object.
SendMessageUpwards Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour.
GetInstanceID Returns the instance id of the object.
ToString Returns the name of the game object.

Static Functions

Destroy Removes a gameobject, component or asset.
DestroyImmediate Destroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoad Makes the object target not be destroyed automatically when loading a new scene.
FindObjectOfType Returns the first active loaded object of Type type.
FindObjectsOfType Returns a list of all active loaded objects of Type type.
Instantiate Clones the object original and returns the clone.

Operators

bool Does the object exist?
operator != Compares if two objects refer to a different object.
operator == Compares if two objects refer to the same.