class in UnityEngine
/
Inherits from:Component
/
Implemented in:UnityEngine.PhysicsModule
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.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
CloseControl 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).
angularDrag | The angular drag of the object. |
angularVelocity | The angular velocity vector of the rigidbody measured in radians per second. |
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 measured in radians per second. (Default 7) range { 0, infinity }. |
maxDepenetrationVelocity | Maximum velocity of a rigidbody when moving out of penetrating state. |
position | The position of the rigidbody. |
rotation | The rotation of the rigidbody. |
sleepThreshold | The mass-normalized energy threshold, below which objects start going to sleep. |
solverIterations | The solverIterations determines how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverIterations. Must be positive. |
solverVelocityIterations | The solverVelocityIterations affects how how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverVelocityIterations. Must be positive. |
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). |
AddExplosionForce | Applies a force to a rigidbody that simulates explosion effects. |
AddForce | Adds a force to the Rigidbody. |
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 its 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. |
ResetCenterOfMass | Reset the center of mass of the rigidbody. |
ResetInertiaTensor | Reset the inertia tensor value and 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. |
OnCollisionEnter | OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider. |
OnCollisionExit | OnCollisionExit 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. |
gameObject | The game object this component is attached to. A component is always attached to a game object. |
tag | The tag of this game object. |
transform | The Transform attached to this GameObject. |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | The name of the object. |
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 GameObject. |
Destroy | Removes a gameobject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object 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. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!