Показать сообщение отдельно
Старый 21.10.2013, 18:28
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Но вы не правы, как мне кажется. Очень сложно объяснить, в чем траббл такого решения (я его пробовал, да), но попробую.
Оно не факт, что хорошее, но работает вполне.

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