Солвер (расталкивание объектов) физического движка?
Необходимо ввести такой параметр как упругость. Иногда его называют bounce material. Он показывает кпд столкновения с поверхность. Проще говоря, упругость определяет долю энергии, оставшуюся у объекта после коллизии. 
Сейчас у вас 100% упругость - абсолютно упругие тела. Но в реальности такого не бывает. Таким образом, скорость отскока должна уменьшиться пропорционально упругости сталкивающихся тел. Затем она ещё раз уменьшиться и ещё раз... А потом достигнет интервала дискретизации - тело остановится.
Ещё нужно учесть сопротивление среды. Сама по себе скорость тела в свободном полёте должна уменьшаться (не учитывая 9.8). Это задаётся вязким трением.
Короче говоря, провести честную симуляциюили интерполяцию между двумя положениями и найти наиболее близкое к соприкосновению поверхностей.
Навероное тут нехватает параметра массы или хотябы трения а лучше сразу обоих. На худой конец хотябы какойто коэффициент гашения accerelation.
Сейчас у вас абсолютно линейный мир в "сферическом вакуме".