From 15afb5af144074d127cfaab7e2df769a561c1448 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 25 Nov 2022 21:38:09 +0200 Subject: [PATCH] Don't apply more friction than it takes to nullify the velocity --- examples/bassteroids/source/physics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/bassteroids/source/physics.cpp b/examples/bassteroids/source/physics.cpp index 2453fd9..21c8bd4 100644 --- a/examples/bassteroids/source/physics.cpp +++ b/examples/bassteroids/source/physics.cpp @@ -191,7 +191,7 @@ void Physics::apply_impulses() float friction_coeff = 0.1f; float inv_mass_sum = entity1.inverse_mass+entity2.inverse_mass; float reaction = (1+restitution)*inner_product(v_rel, c.normal)/inv_mass_sum; - float friction = reaction*friction_coeff; + float friction = min(reaction*friction_coeff, v_tan/inv_mass_sum); LinAl::Vector impulse = c.normal*reaction+tangent*friction; entity1.velocity += impulse*entity1.inverse_mass; entity2.velocity -= impulse*entity2.inverse_momi; -- 2.43.0