TopicLadder
Godot physics path

Collision Normal Bounce Math

Use vectors, surface normals, and restitution to make one 2D bounce predictable before building a whole physics-heavy game.

Topic goal to ladder route

Know the destination, then climb the route.

A topic is the maker goal. A ladder is the route from what you understand now to one visible proof you can build, sketch, test, or explain. This one ties back to Build a First Godot Game Loop.

Start point

Name what you already understand before the build gets bigger.

Topic goal

Build a one-wall Godot bounce proof where incoming velocity, collision normal, outgoing velocity, and energy loss are visible.

Ladder route

Read the short lesson, watch one source tutorial, sketch the idea, check the math, then practice.

Project proof

Use the widget to choose incoming velocity, normal angle, and restitution. Copy the note, then reproduce one wall bounce in a tiny Godot scene.

Bounce path first

Make the surface normal visible before tuning the bounce.

A bounce is not magic physics. It is an incoming motion vector reflected across a surface normal. The useful first proof is a tiny room where one moving object hits one wall, prints the incoming vector, names the normal, and shows the outgoing vector.

Incoming motion

The velocity arrow says where the object was going before contact. Keep speed and direction separate so mistakes are easier to see.

Surface normal

The normal points out from the wall or floor. If the normal is wrong, the bounce will look wrong even when the formula is correct.

Reflected motion

The reflected arrow keeps the sideways part and flips the part aimed into the surface. Restitution then scales how lively the bounce feels.

Source tutorials for collision normals and bounces

These videos support the lesson. Use them to see the idea move, then keep the written ladder, notes, cards, and practice task as the reusable part.

Use the controls to compare source tutorials. The first card embeds a privacy-enhanced player; alternate cards open on YouTube so the page stays fast.

Vector reflection check

Draw the normal, then predict the outgoing arrow.

The formula is only a compact way to check the sketch. A learner should be able to say what part of motion points into the wall and what part stays parallel.

Collision normal and reflected vector A moving ball hits a tilted wall. The diagram shows incoming velocity, surface normal, tangent, and reflected velocity. incoming velocity reflected velocity surface normal parallel part stays wall contact

Sketch first

If the object hits a right wall, the horizontal part flips. If it hits a floor, the vertical part flips.

Use the normal

The normal defines which part of velocity points into the surface.

Scale the energy

Restitution below 1 makes the outgoing arrow shorter and the bounce duller.

Log the proof

Write incoming velocity, normal angle, outgoing velocity, and whether the bounce matches the sketch.

Practice the bounce

Change one vector and predict the bounce before testing it.

Use this small calculator to connect incoming velocity, surface normal, restitution, and the outgoing vector. It is a sketching aid for a one-wall Godot proof.

One collision

Nothing is saved or sent.

Collision normal bounce calculator Diagram showing incoming velocity, surface normal, and reflected outgoing velocity.

Normal vector

(0, 1)

Direction pointing out from the surface.

Incoming speed

6.71

Length of the incoming velocity arrow.

Outgoing velocity

(5.10, 2.55)

Reflected and scaled by restitution.

Outgoing speed

5.70

Lower restitution means a shorter arrow.

Godot debug workflow

  1. Draw the contact: one moving body, one wall, and one surface normal.
  2. Log one hit: incoming velocity, collision normal, reflected velocity, and restitution.
  3. Compare to sketch: if the arrow goes the wrong way, inspect the collision normal and shape first.
  4. Expand slowly: add a second wall only after one bounce can be predicted and repeated.

Ladder steps

Each step should prove one idea before the project asks for the next one.

1
Name the contactUse one moving object and one surface before adding a full room. The collision has one object, one wall, and one expected normal.
2
Draw incoming velocityVelocity is both direction and speed, so write the vector before changing code. The incoming arrow can be described before it touches the surface.
3
Read the surface normalThe normal points out from the surface and decides which velocity component flips. The normal is logged or sketched for the contact point.
4
Scale the reflected vectorRestitution controls how much speed remains after the bounce. The outgoing arrow is shorter, equal, or longer for an explicit reason.

Examples to inspect

Use examples to read signals, not as blind recipes.

Reflect a velocity

Project signal

velocity = velocity.bounce(normal)

Expected signal: The outgoing direction changes across the surface normal

Scale the bounce

Project signal

speed_after = speed_before * restitution

Expected signal: Lower restitution makes a duller bounce

Log one collision

Project signal

print(velocity, normal)

Expected signal: Debug the vector before tuning game feel

Self-check: can you use this?

Answer these before the practice task. The quiz checks your answers on this page only; nothing is saved.

1. What is the first useful proof for a bounce lesson?

Choose an answer to check it.

2. What does the surface normal describe?

Choose an answer to check it.

3. For a right wall, what part of velocity usually changes sign?

Choose an answer to check it.

4. What does restitution change?

Choose an answer to check it.

5. Why sketch before coding Vector2.bounce?

Choose an answer to check it.

6. What is a useful Godot debug note for one hit?

Choose an answer to check it.

7. What should be avoided while debugging bounce math?

Choose an answer to check it.

8. When should you move from one wall to a full room?

Choose an answer to check it.

0 of 8 checked.

Common traps

  • Changing shape, speed, friction, and restitution at the same time.
  • Assuming a wall normal without checking what the engine reports.
  • Using a full level before one repeatable bounce works.
  • Treating a bad bounce as a visual polish problem before logging vectors.

Practice task

Use the widget to choose incoming velocity, normal angle, and restitution. Copy the note, then reproduce one wall bounce in a tiny Godot scene.

Next steps

  • Save the Obsidian note with [[Godot]], [[Collision Normal]], [[Vector Reflection]], [[Velocity]], [[Restitution]], [[Surface Normal]], [[move_and_collide]], [[Vector2.bounce]], and [[Game Physics]] backlinks.
  • Use vectors when the incoming direction or target movement is unclear.
  • Use trigonometry when rotation, launch angle, or aiming arc becomes the next blocker.
  • Use tilemap layout math when the bounce needs a readable room and camera view.
  • Use the source-video notes workflow to preserve timestamps and test results beside the project.

Practice path

  • Near-Copy Rebuild: Recreate one example, decision path, or worked explanation from Collision Normal Bounce Math. Keep most givens the same, then apply, explain, and check while naming each cue you used. Use the lesson's example block when it helps.
  • One-Change Transfer: Change exactly one condition, number, input, symptom, material, or constraint from the near-copy case. Then apply, explain, and check again and explain what changed.
  • Mixed Review Set: Interleave this topic with one prerequisite or adjacent idea. Write three short prompts: one recall, one application, and one comparison.
  • Find And Fix The Error: Invent a plausible wrong answer, unsafe step, invalid assumption, or bad classification. Mark the first point where it goes wrong, then correct it using the lesson's check.

Flashcard preview

What is a surface normal?

A direction that points out from a surface at the contact point.

Why log incoming velocity?

It proves what motion entered the collision before the response changed it.

What does restitution do?

It scales how much speed survives the bounce.

Why one wall first?

One contact makes the normal, incoming vector, and reflected vector easy to inspect.

What does the 'Name the contact' step prove?

Use one moving object and one surface before adding a full room. Check: The collision has one object, one wall, and one expected normal.

What does the 'Draw incoming velocity' step prove?

Velocity is both direction and speed, so write the vector before changing code. Check: The incoming arrow can be described before it touches the surface.

Downloadable study pack

Export the same lesson as a plain Markdown note or Anki-compatible TSV. Commands and code blocks stay plain so they work in local notes.

Related paths

Study pack check passed. Notes, cards, examples, and practice tasks are meant to keep the lesson useful outside the page.

Connected routes

Use these links like a project map: what helps before this, what this unlocks, and where it fits.

What this unlocks

  • Save the Obsidian note with [[Godot]], [[Collision Normal]], [[Vector Reflection]], [[Velocity]], [[Restitution]], [[Surface Normal]], [[move_and_collide]], [[Vector2.bounce]], and [[Game Physics]] backlinks.
  • Use vectors when the incoming direction or target movement is unclear.
  • Use trigonometry when rotation, launch angle, or aiming arc becomes the next blocker.
  • Use tilemap layout math when the bounce needs a readable room and camera view.

Text lesson and video notes

This page works as a text lesson first. If you later watch a matching tutorial, use the notes pattern here to capture the build decision, timestamps, warnings, and the next practical task instead of saving a raw link.

Attach a video note

Save useful workshop or tutorial videos into an Obsidian note with timestamps, source links, and what each segment proves. The site does not need the video to be useful.

Turn a video into notes and cards

Review and practice

Download the cards, then finish the practice task before adding more links to your project notebook.

Open practice tasks

Suggest a better source video

If another tutorial explains this topic more clearly, send the title and YouTube URL. Suggestions should help the ladder, not replace it.

Suggestions are reviewed before they appear.

Topic: Collision Normal Bounce Math

Continue learning this topic

Use this page as part of a project path, not as a one-off article. Save the note, review the cards, try the practice task, then choose the next lesson based on what your project exposes.

Share this maker lesson

Send the context, not just a snippet.

Use the page so the lesson, source videos, notes, cards, and practice task stay attached.

Buy me a cup of coffee

TopicLadder is free to read. Coffee support helps turn rough maker ladders into clearer project paths, notes, cards, and practice labs.

Last reviewed: July 5, 2026. TopicLadder pages are curated for practical learning and may be updated as examples improve.