у тебя в модели движения есть 4 параметра. вертикальная скорость, горизонтальная скорость, текущее положение x, текущее положение y.
у тебя нет явного угла. стены тут горизонтальные и вертикальные и соприкосновение с ними возможно с помощью текущего x или y.
каждый тик ты перемещаешь x , y объекта на соотв. скорость.
гравитацию обрабатываешь как "каждый апдейт уменьшаешь вертикальную скорость"
отскок от стен - это изменение соотв. "скорости" на противоположный знак. потеря энергии от удара об стену это уменьшение этой скорости в 0.5 раз к примеру.