Name what you already understand before the build gets bigger.
Collision Normal Bounce Math
Use vectors, surface normals, and restitution to make one 2D bounce predictable before building a whole physics-heavy game.
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.
Build a one-wall Godot bounce proof where incoming velocity, collision normal, outgoing velocity, and energy loss are visible.
Read the short lesson, watch one source tutorial, sketch the idea, check the math, then practice.
Use the widget to choose incoming velocity, normal angle, and restitution. Copy the note, then reproduce one wall bounce in a tiny Godot scene.
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.
Full Guide To 2D Collisions in Godot 4
Video by DevWorm · Open on YouTube
Good source for seeing where collision shapes, bodies, and contact information enter a Godot project before bounce math is added.
First watch: Watch for the moment a moving object reports contact. Write what object collided and what surface direction the response needs.
- Collision object types
- Collision shapes
- Moving body contact
- Debugging collision response
Practice after watching: Make one test wall and one moving object, then write the expected surface normal before coding the bounce.
Open on YouTube
[Game Math] Tutorial 5 - Vector Reflection
Video by Nathan Biefeld · Open on YouTube
Shows the math idea directly: an incoming vector, a surface normal, and the reflected outgoing vector.
First watch: Pause when the normal is named. Sketch incoming velocity, normal, and outgoing velocity before copying a formula.
- Incoming vector
- Surface normal
- Reflection formula
- 2D bounce sketch
Practice after watching: Choose an incoming arrow and a normal, then predict whether the reflected arrow should go left, right, up, or down.
Open on YouTube
Bouncing Ball - Godot Tutorial
Video by Botnamix · Open on YouTube
Connects the reflection idea to a tiny playable proof: a ball, walls, velocity, and visible bounce behavior.
First watch: Watch for where velocity changes after contact. Write which value proves the bounce is not random.
- Ball scene
- Wall collision
- Velocity update
- Playable bounce
Practice after watching: Build a one-room bounce box and log incoming velocity, normal, and outgoing velocity for one hit.
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.
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.
Ladder steps
Each step should prove one idea before the project asks for the next one.
Examples to inspect
Use examples to read signals, not as blind recipes.
Reflect a velocity
velocity = velocity.bounce(normal)
Expected signal: The outgoing direction changes across the surface normal
Scale the bounce
speed_after = speed_before * restitution
Expected signal: Lower restitution makes a duller bounce
Log one collision
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.
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.
Helpful before this
Project context
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.
Related pages
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.
Read the text lesson
Use the steps, examples, traps, and practice task on this page to understand the next move in a maker project.
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.
Review and practice
Download the cards, then finish the practice task before adding more links to your project notebook.
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.
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.
Study assets
Project context
- Build a First Godot Game Loop
- Browse Games and Interactive Tools
- Next ladder clue: Save the Obsidian note with [[Godot]], [[Collision Normal]], [[Vector Reflection]], [[Velocity]], [[Restitution]], [[Surface Normal]], [[move_and_collide]], [[Vector2.bounce]], and [[Game Physics]] backlinks.
Related references
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.