Skip to main content
Game Physics – Complete Beginner to Advanced Guide
CHAPTER 06 Intermediate

Rigidbody Physics Systems

Updated: May 16, 2026
25 min read

# CHAPTER 6

Rigidbody Physics Systems

1. Introduction

Up until now, we have been calculating movement and gravity manually. This is called "Kinematic" motion. However, if you want to create a bowling game, calculating the ricochet angles of 10 bowling pins bouncing off each other manually is a nightmare. This is where the engine's built-in physics simulation takes over. To tell the physics engine that an object should be simulated, you attach a Rigidbody. In this chapter, we will master the Rigidbody component. We will explore how physical properties like Mass, Linear Drag, and Angular Drag alter simulation, how to apply rotational Torque, and how to use Physics Materials to create bouncy rubber balls and slick ice patches.

2. Learning Objectives

By the end of this chapter, you will be able to:
  • Define the role of a Rigidbody component in a game engine.
  • Understand the impact of Mass on physical interactions (F = ma).
  • Differentiate between Linear Drag (air resistance) and Angular Drag.
  • Apply rotational forces using AddTorque.
  • Create and apply Physics Materials (Bounciness and Friction).

3. The Rigidbody Component

Adding a Collider to an object makes it a solid wall. Adding a Rigidbody makes it a dynamic, simulated entity. Once an object has a Rigidbody, the engine automatically calculates gravity, inertia, and collisions for it every FixedUpdate tick.
  • Rule of Thumb: If you want an object to fall, bounce, or be pushed, it needs a Rigidbody.

4. Core Rigidbody Properties

When you click on a Rigidbody in Unity or Unreal, you see several variables:
  • Mass: How heavy the object is. A car (2000kg) hitting a crate (10kg) will obliterate the crate and barely slow down.
  • Linear Drag: Air resistance. If set to 0, an object pushed in a vacuum will slide forever. If set to 10, it acts like it is submerged in thick honey.
  • Angular Drag: Resistance to spinning. A high angular drag will force a spinning coin to stop rotating quickly.
  • Constraints: You can "freeze" rotation. For example, a humanoid player shouldn't fall over like a bowling pin when they hit a wall. You "Freeze X and Z rotation" so they always stand perfectly upright.

5. Pushing the Rigidbody (AddForce)

We never update transform.position on a Rigidbody. We push it using code.
  • ForceMode.Force: A continuous push, ignoring mass (like a car engine accelerating over time).
  • ForceMode.Impulse: A sudden, instantaneous explosion or jump.
csharp
12345678910
class Cannonball
{
    public Rigidbody rb;

    void Fire()
    {
        // Shoot the cannonball forward instantly
        rb.AddForce(transform.forward * 5000f, ForceMode.Impulse);
    }
}

6. Spinning the Rigidbody (AddTorque)

If you want to spin a car tire or create a tumbling asteroid, you apply a rotational force called Torque.
csharp
12
// Spin the object around its Y axis
rb.AddTorque(0, 500f, 0, ForceMode.Impulse);

7. Physics Materials (Bounciness and Friction)

How does the engine know if your Rigidbody is a rubber ball or a heavy block of ice? You create a Physics Material asset and drag it onto the object's Collider. It has two main properties:
  1. 1. Bounciness (Restitution): A value from 0 to 1. 0 is a sack of flour (dead stop). 1.0 is a superball that bounces back to the exact height it dropped from.
  1. 2. Friction (Dynamic & Static): How slippery the surface is. 0 is frictionless ice. 1 is sticky rubber.

8. Visual Learning: Mass Interaction

txt
123456
[ 10kg Crate ] ---> (Moving at 10 m/s) ---> [ 10kg Crate ]
Result: They bounce and share the momentum equally.

[ 2000kg Car ] ---> (Moving at 10 m/s) ---> [ 10kg Crate ]
Result: The crate flies away at Mach 3. The car loses almost 0 speed.
(Force = Mass x Acceleration)

9. Best Practices

  • Never Change Mass During Play: The physics engine does a massive amount of pre-calculation. If you change an object's mass from 10 to 10,000 in the middle of a collision via script, the engine's math will break, and the objects will likely explode into the sky.

10. Common Mistakes

  • The "Feather and Hammer" Myth: Beginners think a 100kg object will fall faster than a 1kg object. In physics (and in game engines), gravity accelerates all objects equally. If you want a boulder to drop faster than a feather, you do not increase the mass; you increase the feather's Linear Drag to simulate air resistance!

11. Mini Project: Build an Ice Hockey Puck

Objective: Create a Rigidbody setup for a puck that slides forever and bounces perfectly.
  1. 1. Add a Rigidbody to a cylinder.
  1. 2. Set Mass to 0.5.
  1. 3. Set Linear Drag to 0 (so it never slows down).
  1. 4. Create a Physics Material named "IceAndRubber".
  1. 5. Set Friction to 0 (it will never grip the floor).
  1. 6. Set Bounciness to 1.0 (perfect elastic collision).
  1. 7. Apply the material to the puck's collider.
  1. 8. Use rb.AddForce() once. Watch it bounce around the arena forever!

12. Practice Exercises

  1. 1. If you want to prevent a character model from physically falling flat on its face when it runs into a wall, what Rigidbody setting must you adjust?
  1. 2. What C# method is used to apply a rotational spinning force to a Rigidbody?

13. MCQs with Answers

Question 1

You want to create a balloon that falls to the ground incredibly slowly, like it is floating through thick syrup. Which Rigidbody property should you increase?

Question 2

To make a bouncy castle floor, what asset must you create and attach to the floor's Collider?

14. Interview Questions

  • Q: Explain the mathematical difference between ForceMode.Force and ForceMode.Impulse. Provide a gameplay scenario for each.
  • Q: A junior developer increases the Mass of a falling anvil to 10,000kg to make it fall faster, but it falls at the exact same speed as a 1kg box. Explain why this happens, and how to actually achieve the desired "fast-falling" effect.
  • Q: How do Static and Dynamic friction differ in a Physics Material, and how do they interact when a 1kg box is pushed across a 0-friction ice floor?

15. FAQs

Q: Why does my Rigidbody go to sleep? A: To save CPU power, if a Rigidbody stops moving for a few seconds, the engine puts it to "Sleep" (stops calculating it). If you try to move a sleeping body using a script (without waking it up), it might ignore you!

16. Summary

In Chapter 6, we handed control over to the physics engine. We learned that the Rigidbody component is the soul of simulated motion. We manipulated Mass to create heavy, unstoppable objects, and tweaked Drag to simulate air resistance. We learned to spin objects using AddTorque and utilized Physics Materials to create bouncy rubber and frictionless ice. We now understand how to tune the physical reality of our game worlds.

17. Next Chapter Recommendation

We know how to simulate a bowling ball, but how do we build a responsive character like Mario using physics? Proceed to Chapter 7: Character Controllers and Platformer Physics.

Finish this Chapter

Save your progress on your learning path and prepare for coding interview challenges.

Discussion

Join the discussion

Log in or create a free account to participate.

Sort: ·