Use the arrow keys to move one of the balls when it starts to run out of speed. 2 balls interacting with gravity. The physics here, unlike before, ARE accurate. =========== Technical Notes =========== For those of you that want to know how it works, read this article: http://www.vobarian.com/collisions/2dcollisions2.pdf It explains the physics and how to implement them pretty well. If you have a piece of paper and a lot of time, you can simplify the 7 step process discussed on the 2nd and 3rd pages of the article above to four monstrous equations. I used a, b, c, d, e, f, g, and h as the variables, rather than writing xpos, ypos, xvel, yvel, etc. a is xposition(object 1) b is ypos(1) c is xvelocity(1) d is yvel(1) e is xpos(2) f is ypos(2) g is xvel(2) h is yvel(2) i, j, k, and l are temporary variables to prevent recursive problems, so that the equations use the old values for velocity, not the new ones. i is new xvel(1) j is new yvel(1) k is new xvel(2) l is new yvel(2) (For the purposes of this project, and for time's sake, I did not consider the interactions of objects with different masses.) ==================== The project "Elastic Bounce Multi" http://scratch.mit.edu/projects/amcerbu/1576239 was meant to implement a (theoretically) unlimited number of objects. However, in 1s1s scripting, the "repeat _ times" blocks are rather slow, so the speed was drastically reduced. Additionally, the more objects you have, the more collisions you must check. 2 balls have 1 possible collision, 3 have 3, 4 have 6, 5 have 10, 6 have 15, and so on. With some luck, the program can run about 20 balls at Flash turbo speed, but there are no practical applications.