Version: 2022.3
LanguageEnglish
  • C#

Rigidbody

class in UnityEngine

/

Inherits from:Component

/

Implemented in:UnityEngine.PhysicsModule

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

Submission failed

For 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.

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).

Properties

angularDragThe angular drag of the object.
angularVelocityThe angular velocity vector of the rigidbody measured in radians per second.
automaticCenterOfMassWhether or not to calculate the center of mass automatically.
automaticInertiaTensorWhether or not to calculate the inertia tensor automatically.
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.
excludeLayersThe additional layers that all Colliders attached to this Rigidbody should exclude when deciding if the Collider can come into contact with another Collider.
freezeRotationControls whether physics will change the rotation of the object.
includeLayersThe additional layers that all Colliders attached to this Rigidbody should include when deciding if the Collider can come into contact with another Collider.
inertiaTensorThe inertia tensor of this body, defined as a diagonal matrix in a reference frame positioned at this body's center of mass and rotated by Rigidbody.inertiaTensorRotation.
inertiaTensorRotationThe rotation of the inertia tensor.
interpolationInterpolation provides a way to manage the appearance of jitter in the movement of your Rigidbody GameObjects at run time.
isKinematicControls whether physics affects the rigidbody.
massThe mass of the rigidbody.
maxAngularVelocityThe maximum angular velocity of the rigidbody measured in radians per second. (Default 7) range { 0, infinity }.
maxDepenetrationVelocityMaximum velocity of a rigidbody when moving out of penetrating state.
maxLinearVelocityThe maximum linear velocity of the rigidbody measured in meters per second.
positionThe position of the rigidbody.
rotationThe rotation of the Rigidbody.
sleepThresholdThe mass-normalized energy threshold, below which objects start going to sleep.
solverIterationsThe solverIterations determines how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverIterations. Must be positive.
solverVelocityIterationsThe solverVelocityIterations affects how how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverVelocityIterations. Must be positive.
useGravityControls whether gravity affects this rigidbody.
velocityThe velocity vector of the rigidbody. It represents the rate of change of Rigidbody position.
worldCenterOfMassThe center of mass of the rigidbody in world space (Read Only).

Public Methods

AddExplosionForceApplies a force to a rigidbody that simulates explosion effects.
AddForceAdds a force to the Rigidbody.
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 its coordinate system.
AddTorqueAdds a torque to the rigidbody.
ClosestPointOnBoundsThe closest point to the bounding box of the attached colliders.
GetAccumulatedForceReturns the force that the Rigidbody has accumulated before the simulation step.
GetAccumulatedTorqueReturns the torque that the Rigidbody has accumulated before the simulation step.
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?
MoveMoves the Rigidbody to position and rotates the Rigidbody to rotation.
MovePositionMoves the kinematic Rigidbody towards position.
MoveRotationRotates the rigidbody to rotation.
ResetCenterOfMassReset the center of mass of the rigidbody.
ResetInertiaTensorReset the inertia tensor value and 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.
OnCollisionExitOnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.
OnCollisionStayOnCollisionStay is called once per frame for every Collider or Rigidbody that touches another Collider or Rigidbody.

Inherited Members

Properties

gameObjectThe game object this component is attached to. A component is always attached to a game object.
tagThe tag of this game object.
transformThe Transform attached to this GameObject.
hideFlagsShould the object be hidden, saved with the Scene or modifiable by the user?
nameThe name of the object.

Public Methods

BroadcastMessageCalls the method named methodName on every MonoBehaviour in this game object or any of its children.
CompareTagChecks the GameObject's tag against the defined tag.
GetComponentGets a reference to a component of type T on the same GameObject as the component specified.
GetComponentInChildrenGets a reference to a component of type T on the same GameObject as the component specified, or any child of the GameObject.
GetComponentIndexGets the index of the component on its parent GameObject.
GetComponentInParentGets a reference to a component of type T on the same GameObject as the component specified, or any parent of the GameObject.
GetComponentsGets references to all components of type T on the same GameObject as the component specified.
GetComponentsInChildrenGets references to all components of type T on the same GameObject as the component specified, and any child of the GameObject.
GetComponentsInParentGets references to all components of type T on the same GameObject as the component specified, and any parent of the GameObject.
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.
TryGetComponentGets the component of the specified type, if it exists.
GetInstanceIDGets the instance ID of the object.
ToStringReturns the name of the object.

Static Methods

DestroyRemoves a GameObject, component or asset.
DestroyImmediateDestroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoadDo not destroy the target Object when loading a new Scene.
FindAnyObjectByTypeRetrieves any active loaded object of Type type.
FindFirstObjectByTypeRetrieves the first active loaded object of Type type.
FindObjectOfTypeReturns the first active loaded object of Type type.
FindObjectsByTypeRetrieves a list of all loaded objects of Type type.
FindObjectsOfTypeGets a list of all loaded objects of Type type.
InstantiateClones the object original and returns the clone.
InstantiateAsyncCaptures a snapshot of the original object (that must be related to some GameObject) and returns the AsyncInstantiateOperation.

Operators

boolDoes 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.