Bird
Raised Fist0
Unityframework~5 mins

Rigidbody forces and velocity in Unity - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is a Rigidbody in Unity?
A Rigidbody is a component that allows a GameObject to be affected by physics, like gravity and forces, making it move realistically.
Click to reveal answer
beginner
How do you apply a force to a Rigidbody to make it move?
You use the Rigidbody's AddForce method, which pushes the object in a direction with a certain strength.
Click to reveal answer
intermediate
What is the difference between setting Rigidbody.velocity directly and using AddForce?
Setting velocity changes the object's speed immediately, while AddForce applies a push that affects velocity over time based on mass and drag.
Click to reveal answer
beginner
What does Rigidbody.useGravity control?
It controls whether the Rigidbody is affected by gravity. If true, gravity pulls the object down; if false, it floats.
Click to reveal answer
intermediate
Why should you avoid setting Rigidbody.velocity every frame for smooth physics?
Because it overrides physics calculations and can cause unnatural movement. Using AddForce lets physics behave naturally.
Click to reveal answer
Which method applies a continuous push to a Rigidbody in Unity?
ATranslate
BSetPosition
CAddForce
DSetActive
What happens if you set Rigidbody.useGravity to false?
AThe object will not be affected by gravity.
BThe object will fall faster.
CThe object will rotate automatically.
DThe object will freeze in place.
Directly setting Rigidbody.velocity will:
ADisable physics on the object.
BApply a gradual force.
CChange the object's color.
DInstantly change the object's speed.
Which Rigidbody property affects how much the object resists movement?
Amass
Bdrag
CuseGravity
DisKinematic
To make a Rigidbody jump, you should:
AUse AddForce with an upward direction.
BSet velocity to zero.
CDisable gravity.
DChange the object's scale.
Explain how AddForce and velocity differ when moving a Rigidbody in Unity.
Think about how the object reacts immediately versus over time.
You got /4 concepts.
    Describe what happens when you disable gravity on a Rigidbody and how it affects movement.
    Imagine turning off Earth's pull on the object.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Unity, what is the main difference between applying a force to a Rigidbody and setting its velocity directly?
      easy
      A. Applying a force stops the Rigidbody immediately, setting velocity makes it float.
      B. Applying a force changes the Rigidbody's color, setting velocity changes its size.
      C. Applying a force disables gravity, setting velocity enables gravity.
      D. Applying a force changes velocity gradually, setting velocity changes it instantly.

      Solution

      1. Step 1: Understand force effect on Rigidbody

        Applying a force adds acceleration, so velocity changes smoothly over time.
      2. Step 2: Understand velocity setting

        Setting velocity directly changes speed and direction immediately without gradual acceleration.
      3. Final Answer:

        Applying a force changes velocity gradually, setting velocity changes it instantly. -> Option D
      4. Quick Check:

        Force = gradual change, velocity = instant change [OK]
      Hint: Force pushes smoothly; velocity sets speed instantly [OK]
      Common Mistakes:
      • Thinking force stops the object immediately
      • Confusing force with color or size changes
      • Believing velocity affects gravity
      2. Which of the following is the correct way to add an upward force to a Rigidbody named rb in Unity?
      easy
      A. rb.AddForce(Vector3.up * 10);
      B. rb.AddForce(10, Vector3.up);
      C. rb.AddForce(10);
      D. rb.AddForceUp(10);

      Solution

      1. Step 1: Check AddForce method signature

        Unity's Rigidbody.AddForce expects a Vector3 representing force direction and magnitude.
      2. Step 2: Verify correct usage

        Using Vector3.up * 10 applies force upwards with magnitude 10, matching the method signature.
      3. Final Answer:

        rb.AddForce(Vector3.up * 10); -> Option A
      4. Quick Check:

        AddForce(Vector3) is correct syntax [OK]
      Hint: AddForce needs Vector3 direction and magnitude [OK]
      Common Mistakes:
      • Passing separate arguments instead of a Vector3
      • Using non-existent methods like AddForceUp
      • Passing only a number without direction
      3. Consider this Unity C# code snippet:
      Rigidbody rb = GetComponent<Rigidbody>();
      rb.velocity = new Vector3(0, 5, 0);
      rb.AddForce(new Vector3(0, 10, 0), ForceMode.Acceleration);
      What will be the Rigidbody's velocity immediately after these lines run?
      medium
      A. Velocity will be (0, 5, 0) and then increase gradually.
      B. Velocity will be (0, 10, 0) instantly.
      C. Velocity will be (0, 15, 0) instantly.
      D. Velocity will be (0, 0, 0) because forces cancel velocity.

      Solution

      1. Step 1: Analyze velocity assignment

        Setting rb.velocity to (0,5,0) sets speed instantly upward at 5 units per second.
      2. Step 2: Analyze AddForce with Acceleration mode

        AddForce with ForceMode.Acceleration adds acceleration, so velocity increases gradually over time, not instantly.
      3. Final Answer:

        Velocity will be (0, 5, 0) and then increase gradually. -> Option A
      4. Quick Check:

        Velocity set instantly; force adds gradual acceleration [OK]
      Hint: Velocity sets speed instantly; force adds gradual acceleration [OK]
      Common Mistakes:
      • Assuming AddForce instantly changes velocity
      • Confusing ForceMode.Acceleration with ForceMode.VelocityChange
      • Thinking forces cancel velocity
      4. What is wrong with this Unity C# code to move a Rigidbody upward?
      Rigidbody rb = GetComponent<Rigidbody>();
      rb.velocity += Vector3.up * 5;
      medium
      A. You cannot use '+=' operator with velocity; it causes errors.
      B. This code instantly adds 5 units upward speed every frame, causing acceleration buildup.
      C. Vector3.up is not a valid direction for velocity.
      D. Rigidbody velocity cannot be changed directly.

      Solution

      1. Step 1: Understand velocity += Vector3.up * 5

        This adds 5 units upward speed to current velocity instantly each time it runs.
      2. Step 2: Identify problem in repeated calls

        If called every frame, velocity keeps increasing, causing unnatural acceleration buildup.
      3. Final Answer:

        This code instantly adds 5 units upward speed every frame, causing acceleration buildup. -> Option B
      4. Quick Check:

        Adding velocity each frame causes speed to grow too fast [OK]
      Hint: Adding velocity each frame causes speed to grow too fast [OK]
      Common Mistakes:
      • Thinking '+=' on velocity causes syntax errors
      • Believing Vector3.up is invalid
      • Assuming velocity cannot be changed directly
      5. You want to make a Rigidbody jump smoothly using physics forces, but also limit its maximum upward speed to 10 units per second. Which approach correctly combines forces and velocity control?
      hard
      A. Use rb.AddForce(Vector3.up * jumpForce) only and ignore velocity limits.
      B. Set rb.velocity = Vector3.up * 10 directly every frame without forces.
      C. Use rb.AddForce(Vector3.up * jumpForce) and clamp rb.velocity.y to max 10 after applying force.
      D. Set rb.velocity = Vector3.up * jumpForce once and never apply forces.

      Solution

      1. Step 1: Use AddForce for smooth jumping

        Applying AddForce lets physics handle smooth acceleration for jump.
      2. Step 2: Clamp velocity to limit max speed

        After applying force, clamp rb.velocity.y to 10 to prevent exceeding max upward speed.
      3. Final Answer:

        Use rb.AddForce(Vector3.up * jumpForce) and clamp rb.velocity.y to max 10 after applying force. -> Option C
      4. Quick Check:

        Force for smooth jump + clamp velocity to limit speed [OK]
      Hint: Combine AddForce with velocity clamp to control max speed [OK]
      Common Mistakes:
      • Setting velocity directly every frame causing unnatural jumps
      • Ignoring velocity limits causing excessive speed
      • Using only velocity without forces for smooth physics