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 everyFixedUpdate 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 updatetransform.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
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
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.
Bounciness (Restitution): A value from 0 to 1.
0is a sack of flour (dead stop).1.0is a superball that bounces back to the exact height it dropped from.
-
2.
Friction (Dynamic & Static): How slippery the surface is.
0is frictionless ice.1is sticky rubber.
8. Visual Learning: Mass Interaction
txt
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. Add a Rigidbody to a cylinder.
-
2.
Set Mass to
0.5.
-
3.
Set Linear Drag to
0(so it never slows down).
- 4. Create a Physics Material named "IceAndRubber".
-
5.
Set Friction to
0(it will never grip the floor).
-
6.
Set Bounciness to
1.0(perfect elastic collision).
- 7. Apply the material to the puck's collider.
-
8.
Use
rb.AddForce()once. Watch it bounce around the arena forever!
12. Practice Exercises
- 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?
- 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.ForceandForceMode.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 theRigidbody 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.