Legacy Documentation: Version 4.5.0

Script language:

  • JS
  • C#
  • Boo
Script language

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

Rigidbody

Switch to Manual

Namespace: UnityEngine

/

Inherits from: Component

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

angularDragThe angular drag of the object.
angularVelocityThe angular velocity vector of the rigidbody.
centerOfMassThe center of mass relative to the transform's origin.
collisionDetectionModeThe Rigidbody's collision detection mode.
constraintsControls which degrees of freedom are allowed for the simulation of this Rigidbody.
detectCollisionsShould collision detection be enabled? (By default always enabled).
dragThe drag of the object.
freezeRotationControls whether physics will change the rotation of the object.
inertiaTensorThe diagonal inertia tensor of mass relative to the center of mass.
inertiaTensorRotationThe rotation of the inertia tensor.
interpolationInterpolation allows you to smooth out the effect of running physics at a fixed frame rate.
isKinematicControls whether physics affects the rigidbody.
massThe mass of the rigidbody.
maxAngularVelocityThe maximimum angular velocity of the rigidbody. (Default 7) range { 0, infinity }.
positionThe position of the rigidbody.
rotationThe rotation of the rigdibody.
sleepAngularVelocityThe angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }.
sleepVelocityThe linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }.
solverIterationCountAllows you to override the solver iteration count per rigidbody.
useConeFrictionForce cone friction to be used for this rigidbody.
useGravityControls whether gravity affects this rigidbody.
velocityThe velocity vector of the rigidbody.
worldCenterOfMassThe center of mass of the rigidbody in world space (Read Only).

Functions

AddExplosionForceApplies a force to the rigidbody that simulates explosion effects. The explosion force will fall off linearly with distance to the rigidbody.
AddForceAdds a force to the rigidbody. As a result the rigidbody will start moving.
AddForceAtPositionApplies force at position. As a result this will apply a torque and force on the object.
AddRelativeForceAdds a force to the rigidbody relative to its coordinate system.
AddRelativeTorqueAdds a torque to the rigidbody relative to the rigidbodie's own coordinate system.
AddTorqueAdds a torque to the rigidbody.
ClosestPointOnBoundsThe closest point to the bounding box of the attached colliders.
GetPointVelocityThe velocity of the rigidbody at the point worldPoint in global space.
GetRelativePointVelocityThe velocity relative to the rigidbody at the point relativePoint.
IsSleepingIs the rigidbody sleeping?
MovePositionMoves the rigidbody to position.
MoveRotationRotates the rigidbody to rotation.
SetDensitySets the mass based on the attached colliders assuming a constant density.
SleepForces a rigidbody to sleep at least one frame.
SweepTestTests if a rigidbody would collide with anything, if it was moved through the scene.
SweepTestAllLike Rigidbody.SweepTest, but returns all hits.
WakeUpForces a rigidbody to wake up.

Messages

OnCollisionEnterOnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
OnCollisionExitOnCollisionEnter is called when this collider/rigidbody has stopped touching another rigidbody/collider.
OnCollisionStayOnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.

Inherited members

Variables

animationThe Animation attached to this GameObject (null if there is none attached).
audioThe AudioSource attached to this GameObject (null if there is none attached).
cameraThe Camera attached to this GameObject (null if there is none attached).
colliderThe Collider attached to this GameObject (null if there is none attached).
collider2DThe Collider2D component attached to the object.
constantForceThe ConstantForce attached to this GameObject (null if there is none attached).
gameObjectThe game object this component is attached to. A component is always attached to a game object.
guiTextThe GUIText attached to this GameObject (null if there is none attached).
guiTextureThe GUITexture attached to this GameObject (Read Only). (null if there is none attached).
hingeJointThe HingeJoint attached to this GameObject (null if there is none attached).
lightThe Light attached to this GameObject (null if there is none attached).
networkViewThe NetworkView attached to this GameObject (Read Only). (null if there is none attached).
particleEmitterThe ParticleEmitter attached to this GameObject (null if there is none attached).
particleSystemThe ParticleSystem attached to this GameObject (null if there is none attached).
rendererThe Renderer attached to this GameObject (null if there is none attached).
rigidbodyThe Rigidbody attached to this GameObject (null if there is none attached).
rigidbody2DThe Rigidbody2D that is attached to the Component's GameObject.
tagThe tag of this game object.
transformThe Transform attached to this GameObject (null if there is none attached).
hideFlagsShould the object be hidden, saved with the scene or modifiable by the user?
nameThe name of the object.

Functions

BroadcastMessageCalls the method named methodName on every MonoBehaviour in this game object or any of its children.
CompareTagIs this game object tagged with /tag/?
GetComponentReturns the component of Type type if the game object has one attached, null if it doesn't.
GetComponentInChildrenReturns the component of Type type in the GameObject or any of its children using depth first search.
GetComponentInParentReturns the component of Type type in the GameObject or any of its parents.
GetComponentsReturns all components of Type type in the GameObject.
GetComponentsInChildrenReturns all components of Type type in the GameObject or any of its children.
GetComponentsInParentReturns all components of Type type in the GameObject or any of its parents.
SendMessageCalls the method named methodName on every MonoBehaviour in this game object.
SendMessageUpwardsCalls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour.
GetInstanceIDReturns the instance id of the object.
ToStringReturns the name of the game object.

Static Functions

DestroyRemoves a gameobject, component or asset.
DestroyImmediateDestroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoadMakes the object target not be destroyed automatically when loading a new scene.
FindObjectOfTypeReturns the first active loaded object of Type type.
FindObjectsOfTypeReturns a list of all active loaded objects of Type type.
InstantiateClones the object original and returns the clone.

Operators

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