На сколько мне помнится я когда-то уже с таким сталкивался. Решал просто, помоему так, но могу ошибаться, надо пробывать:
опускаем игрока вниз под действием гравитации
если игрок столкнулся с препятствием именно снизу (путем нормали столкновения находиться), то вычисляем высоту терраина в позиции игрока и ставим игрока уже в эту позицию, тогда его никто не будет оталкивать
