PDA

Просмотр полной версии : Как, кроме hitTest-а, можно обнаруживать перекрытия мувиклипов?


orcpochta
12.06.2008, 19:46
существует ли метод проверки перекрытия мувиклипов не по ограничивающим прямоугольникам, а по фактическому содержимому?
ну т.е. hitTest проверяет только ограничивающие прямоугольники (если не рассматривать вариант поточечного хит-тестирования), поэтому, если там две окружности в мувиклипах, то может возникнуть случай, что они друг на друга не накладываются, а хитТест, говорит об обратном, т.к. накладываются ограничивающие прямоугольники.

Понятно, что про окружности - это только пример и можно мерить их радиусы и расстояние между центрами, но как быть, если это, например, звездочки или другие сложные фигуры? тут уже математическими методами так просто не замерить...

2Модератор: Не знаю как еще правильно сформулировать вопрос, чтобы тему не закрыли.

Fernando Costa
12.06.2008, 19:56
можно BitmapData-ой, только будет ресурсоемко, можно на края звездочки повесить мувиклипы в один пиксель и хитТест поверять с ними

Psycho Tiger
12.06.2008, 20:24
Сложными - но они того стоят (вспомни N)
Перевод от Нокса Нокитса:
http://noregret.org/tutor/n/collision/

Роман Вадимович
12.06.2008, 20:33
hitTest кстати позволяет определить пересечение объекта и точки.
Может существует возможность принять второй объект за точку?
Это хорошо подходит в случае мишени и пули.

Psycho Tiger
12.06.2008, 20:45
Ага, а ещё можно делать так:
Идем от вершины мувиклипа до его конца по каждому _х.
Нашли пересечение - добавляем точку в массив.
Аналогично снизу вверх, слева-направо,справа-налево.
После проверяем все точки, что в масиве на пересечение с другим мувиклипом.
Можно обойтись и без масива, это для наглядности сдесь вставил)

orcpochta
13.06.2008, 00:38
hitTest кстати позволяет определить пересечение объекта и точки.
Может существует возможность принять второй объект за точку?
Это хорошо подходит в случае мишени и пули.

я это упомянул в вопросе..))
hitTest проверяет только ограничивающие прямоугольники (если не рассматривать вариант поточечного хит-тестирования)

можно на края звездочки повесить мувиклипы в один пиксель и хитТест поверять с ними

звездочка - это всего-лишь пример, а как быть, если фигуры трансформируются во времени?

Ага, а ещё можно делать так:
Идем от вершины мувиклипа до его конца по каждому _х.
Нашли пересечение - добавляем точку в массив.
Аналогично снизу вверх, слева-направо,справа-налево.
После проверяем все точки, что в масиве на пересечение с другим мувиклипом.
Можно обойтись и без масива, это для наглядности сдесь вставил)


это сколько же точек получится?..)) комп умрет на проверке всех точек..))

Psycho Tiger
13.06.2008, 14:15
Когда то кто то делал на ас1 подобное, 1 фигурка таскается, другая не подвижная. Не тормозило. Не обязательно ведь сдвигаться на 1 пискель, можно сразу на 5 :)

orcpochta
13.06.2008, 22:55
Когда то кто то делал на ас1 подобное, 1 фигурка таскается, другая не подвижная. Не тормозило. Не обязательно ведь сдвигаться на 1 пискель, можно сразу на 5 :)

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

Psycho Tiger
15.06.2008, 10:55
Я и говорю - простор для полета воображения :)
В итоге можно получить достаточно быстродейственный алгоритм перекрытия 2 совершенно произвольных фигур.
Кстати, в принципе любую фигуру можно описать кривыми безье, Иван Дембицкий как раз пишет класс для этого.