Обработка столкновений

Насчет верхних и нижних углов. Этот чит нужен, т.к. при столкновении с нижними углами нас гравитация и движение в сторону будет заставлять висеть на этом углу. Пример:
<pre>
.#.
...
#$#
</pre>
после столкновения с верхней стенкой мы получаем гравитацию 0.2, жмем вправо/влево, чтобы вылезти, получаем ускорение 0.2 и двигаемся точно в угол. В итоге игрок тупо весит и не можем выбраться из ловушки.