How can I resolve collisions a little better? I'm currently developing a physics engine and I'm not sure the best way to go about resolving my problem. I have a little box, that I can move around with in my scene. When I'm resolving collisions, I take in the two bodies that are colliding, determine what both of their normal forces are and apply it to them (I also multiple it by a small number, if I don't I can't continue to walk around the scene). Anyways, while I'm resolving the collision I do this a.Position a.Velocity b.Position b.Velocity I know this isn't a very good way to resolve the collision, but I'm just not sure how to do it correctly. How should I go about resolve collision correctly? Also, here is the whole method I use to resolve collision at the moment private void ResolveCollision(Body a, Body b) Calculate normals forces (N M G) Vector2 normalForceA this.CalculateNormalForce(a) Vector2 normalForceB this.CalculateNormalForce(b) Resolve collision, which is super buggy and obviously a bad idea. a.Position a.Velocity b.Position b.Velocity Apply normal forces a.ApplyForce( normalForceA 11) b.ApplyForce( normalForceB 11) EDIT This is for a 2D game. EDIT Here is a video of what's going on when I applied TomTsagk's answer. The video is here