Цитата:
|
Но вы не правы, как мне кажется. Очень сложно объяснить, в чем траббл такого решения (я его пробовал, да), но попробую.
|
Оно не факт, что хорошее, но работает вполне.
Как у меня это работало:
- Берем текущую позицию
- Берём позицию после перемещения
- Перебираем n промежуточных вариантов тупым циклом

Код:
n = Math.round(Math.max(pos2X - pos1X, pos2Y - pos1Y, 1));
xi = pos1X + (i / n) * (pos2X - pos1X);
yi = pos1Y + (i / n) * (pos2Y - pos1Y);
т.е. гарантированно не грубее одного пикселя
- На каждой итерации смотрим, не пересекает ли наш прямоугольник препятствия
- Если пересекает - останавливаемся и считаем текущее положение конечным.
Способ варварский, но на том платформере к тормозам не приводил. Поэтому мне было всё равно