Вот несколько ссылок, которые, я думаю, помогут вам в вашем квесте:
Box2D
Физика продвинутых персонажей
Javascript Ball Simulation
Box2D имеет то, что вы ищете, и его открытый исходный код, я считаю. Вы можете скачать файлы и посмотреть, как они делают то, что делают, чтобы добиться вашего эффекта.
Дайте мне знать, если это поможет, пытаясь лучше ответить на вопросы здесь. :)
EDIT:
Так что я пошел дальше и подумал об этом еще немного, чтобы дать некоторое представление о том, как я подхожу к этому. Посмотрите на изображение ниже:
В принципе, сравните углы на сетке, если шар падает на +30 градусов по сравнению с шаром, на который он падает, затем поверните шар положительно. Если он упал на 30 градусов по сравнению с мячом, на который он упал, поверните шар отрицательно. Я не говорю, что это правильное решение, но просто думаю об этом, так я бы подошел к проблеме с нуля.