diff --git a/src/physics_entity.c b/src/physics_entity.c index 0752109..a19dd36 100644 --- a/src/physics_entity.c +++ b/src/physics_entity.c @@ -78,6 +78,10 @@ void physics_entity_solve_contacts(PhysicsEntity self, List* contacts) { if(iteration == 1) LOG_WARNING("gave up on solving %zu contacts", contacts->len); } + Vector dir = vnormalizedf(vsubf(rigidbody_get_transform(body)->position, pre_solve.position)); + Vector vel = rigidbody_get_velocity(body); + vel = vsubf(vel, vprojectf(dir, vel)); + rigidbody_set_velocity(body, vel); } void physics_entity_update(PhysicsEntity self) {