Bird
Raised Fist0
Unityframework~10 mins

Rigidbody 3D component in Unity - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Rigidbody 3D component
Add Rigidbody Component
Physics Engine Controls Object
Apply Forces or Gravity
Object Moves According to Physics
Check Collisions and Responses
Update Object Position and Rotation
The Rigidbody 3D component lets Unity's physics engine control an object, moving it with forces and gravity, and handling collisions.
Execution Sample
Unity
void Start() {
  Rigidbody rb = GetComponent<Rigidbody>();
  rb.AddForce(new Vector3(0, 10, 0), ForceMode.Impulse);
}
This code gets the Rigidbody component and applies an instant upward force to make the object jump.
Execution Table
StepActionRigidbody StatePositionVelocityOutput
1Get Rigidbody componentActive(0,0,0)(0,0,0)Ready to apply forces
2Apply upward impulse forceActive(0,0,0)(0,10,0)Velocity changes instantly
3Physics update frame 1Active(0,0.1,0)(0,9.02,0)Object moves up slightly
4Physics update frame 2Active(0,0.28,0)(0,8.14,0)Object continues moving up
5Physics update frame 3Active(0,0.53,0)(0,7.26,0)Object slows down due to gravity
6Physics update frame NActive(0,y,0)(0,v,0)Object eventually falls back down
7Collision detectedActive(0,0,0)(0,0,0)Object stops moving on ground
💡 Simulation continues until object stops or script disables Rigidbody
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
Position(0,0,0)(0,0,0)(0,0.1,0)(0,0.28,0)(0,0.53,0)(0,0,0)
Velocity(0,0,0)(0,10,0)(0,9.02,0)(0,8.14,0)(0,7.26,0)(0,0,0)
Rigidbody StateActiveActiveActiveActiveActiveActive
Key Moments - 3 Insights
Why does the object's velocity change instantly after applying AddForce with ForceMode.Impulse?
Because ForceMode.Impulse applies an immediate change to velocity, as shown in execution_table step 2 where velocity jumps from (0,0,0) to (0,10,0).
Why does the position keep increasing even though no new forces are applied after the impulse?
Because the Rigidbody's velocity carries the object upward, and gravity gradually reduces velocity over time, seen in steps 3 to 5.
What happens when the object collides with the ground?
The Rigidbody stops moving and velocity resets to zero, as shown in step 7 where position is at ground level and velocity is (0,0,0).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the velocity of the Rigidbody right after applying the impulse force (Step 2)?
A(0,10,0)
B(0,0,0)
C(10,0,0)
D(0,-10,0)
💡 Hint
Check the 'Velocity' column at Step 2 in the execution_table.
At which step does the Rigidbody start slowing down due to gravity?
AStep 2
BStep 5
CStep 3
DStep 7
💡 Hint
Look at the velocity values decreasing in the execution_table between steps 3 to 5.
If we remove the Rigidbody component, what would happen to the object's movement?
AIt would still move with physics forces.
BIt would not move due to physics.
CIt would move faster.
DIt would fall faster.
💡 Hint
Refer to the concept_flow where Rigidbody is needed for physics control.
Concept Snapshot
Rigidbody 3D component lets Unity physics move objects.
Add Rigidbody to object to enable physics.
Use AddForce to push or pull it.
ForceMode.Impulse changes velocity instantly.
Gravity pulls object down automatically.
Collisions stop or bounce the object.
Full Transcript
The Rigidbody 3D component in Unity allows the physics engine to control an object. When you add a Rigidbody, the object can move with forces like pushes or gravity. In the example, we get the Rigidbody component and apply an upward impulse force, which instantly changes the object's velocity upwards. Each physics update moves the object according to velocity and gravity slows it down over time. Eventually, the object collides with the ground and stops moving. This shows how Rigidbody handles movement and collisions automatically.

Practice

(1/5)
1. What is the main purpose of adding a Rigidbody component to a 3D object in Unity?
easy
A. To make the object invisible
B. To change the object's color
C. To make the object respond to physics like gravity and collisions
D. To add sound effects to the object

Solution

  1. Step 1: Understand Rigidbody role

    The Rigidbody component allows objects to move and react using physics rules like gravity and collisions.
  2. Step 2: Compare options

    Only To make the object respond to physics like gravity and collisions describes physics behavior, others are unrelated to Rigidbody.
  3. Final Answer:

    To make the object respond to physics like gravity and collisions -> Option C
  4. Quick Check:

    Rigidbody = physics control [OK]
Hint: Rigidbody = physics behavior for 3D objects [OK]
Common Mistakes:
  • Confusing Rigidbody with visual or audio components
  • Thinking Rigidbody changes appearance
  • Assuming Rigidbody disables collisions
2. Which of the following is the correct way to access the Rigidbody component in a Unity C# script attached to the same GameObject?
easy
A. Rigidbody rb = FindObjectOfType<Rigidbody>();
B. Rigidbody rb = GetComponent<Rigidbody>();
C. Rigidbody rb = GetComponent<Collider>();
D. Rigidbody rb = new Rigidbody();

Solution

  1. Step 1: Identify correct method to get Rigidbody

    Use GetComponent<Rigidbody>() to get Rigidbody on the same GameObject.
  2. Step 2: Check other options

    Rigidbody rb = GetComponent<Collider>(); gets Collider, not Rigidbody. Rigidbody rb = FindObjectOfType<Rigidbody>(); finds any Rigidbody in scene, not necessarily on this object. Rigidbody rb = new Rigidbody(); creates a new Rigidbody instance, which is incorrect.
  3. Final Answer:

    Rigidbody rb = GetComponent<Rigidbody>(); -> Option B
  4. Quick Check:

    GetComponent<Rigidbody>() = correct access [OK]
Hint: Use GetComponent<Rigidbody>() to access Rigidbody on same object [OK]
Common Mistakes:
  • Using GetComponent<Collider>() instead of Rigidbody
  • Creating new Rigidbody with new keyword
  • Using FindObjectOfType which is less specific
3. Consider this C# code in Unity:
void Start() {
  Rigidbody rb = GetComponent<Rigidbody>();
  rb.useGravity = false;
  rb.AddForce(new Vector3(0, 10, 0), ForceMode.Impulse);
}
What will happen to the object when the game starts?
medium
A. The object will jump up with an impulse and stay in the air without falling
B. The object will jump up with an impulse and then fall due to gravity
C. The object will not move at all
D. The object will fall down immediately without jumping

Solution

  1. Step 1: Analyze Rigidbody settings

    Setting useGravity = false disables gravity effect on the object.
  2. Step 2: Analyze AddForce effect

    Adding an impulse force upwards makes the object jump up instantly.
  3. Step 3: Combine effects

    Since gravity is off, the object will jump up but not fall back down.
  4. Final Answer:

    The object will jump up with an impulse and stay in the air without falling -> Option A
  5. Quick Check:

    useGravity false + impulse = jump up, no fall [OK]
Hint: useGravity false means no falling after force applied [OK]
Common Mistakes:
  • Assuming gravity still pulls object down
  • Thinking AddForce alone moves object continuously
  • Confusing ForceMode types
4. You wrote this code but the object does not move as expected:
void Update() {
  Rigidbody rb = GetComponent<Rigidbody>();
  rb.velocity = new Vector3(0, 5, 0);
}
What is the likely problem?
medium
A. The Rigidbody component is missing on the object
B. You need to call rb.MovePosition() instead of setting velocity
C. The velocity vector is incorrect; it should be (5, 0, 0)
D. Setting velocity in Update causes physics conflicts; should use FixedUpdate

Solution

  1. Step 1: Understand Rigidbody physics update timing

    Physics updates happen in FixedUpdate, not Update. Setting velocity in Update can cause inconsistent behavior.
  2. Step 2: Identify correct method

    Velocity changes should be done inside FixedUpdate for smooth physics simulation.
  3. Final Answer:

    Setting velocity in Update causes physics conflicts; should use FixedUpdate -> Option D
  4. Quick Check:

    Use FixedUpdate for Rigidbody velocity changes [OK]
Hint: Change Rigidbody velocity inside FixedUpdate, not Update [OK]
Common Mistakes:
  • Forgetting Rigidbody component is required
  • Changing velocity in Update instead of FixedUpdate
  • Confusing velocity vector directions
5. You want to create a bouncing ball that loses some speed each bounce using Rigidbody. Which combination of Rigidbody properties and methods should you use to achieve this realistic effect?
hard
A. Set Rigidbody's drag to a small positive value and use Physics Material with bounciness less than 1
B. Set Rigidbody's useGravity to false and apply upward force every frame
C. Set Rigidbody's isKinematic to true and move the ball manually in Update
D. Disable Rigidbody and use Transform.Translate to simulate bouncing

Solution

  1. Step 1: Understand bouncing with physics

    Bouncing requires gravity, collision response, and energy loss over time.
  2. Step 2: Use drag and physics material

    Setting drag slows the ball gradually. Physics Material's bounciness controls bounce height and energy loss.
  3. Step 3: Evaluate other options

    Set Rigidbody's useGravity to false and apply upward force every frame disables gravity, so no natural bounce. Set Rigidbody's isKinematic to true and move the ball manually in Update disables physics simulation. Disable Rigidbody and use Transform.Translate to simulate bouncing ignores physics entirely.
  4. Final Answer:

    Set Rigidbody's drag to a small positive value and use Physics Material with bounciness less than 1 -> Option A
  5. Quick Check:

    Drag + bounciness < 1 = realistic bounce loss [OK]
Hint: Use drag and physics material bounciness < 1 for realistic bounce [OK]
Common Mistakes:
  • Turning off gravity disables bouncing
  • Making Rigidbody kinematic stops physics
  • Using Transform.Translate ignores physics