![]() |
Проверка столкновений объектов произвольной формы
Вложений: 1
задался задачей проверки на пересечение или касание двух спрайтов/мувиков/шейпов произвольной формы.
Неужели для проверки надо будет использовать hitTestPoint()? т.к. hitTestObject выдает: Код AS3:
Есть ли способ проверять столкновения с наименьшими затратами от процессора? |
Да. Пользуйтесь математикой модели.
|
hitTestObject возвращает true в том случае, если пересекаются габаритные прямоугольники объектов.
Нужно получить область пересечения (еще один прямоугольник), внутри которой проверять каждую точку на пересечение с обоими объектами (то есть если точка пересекается и с тем, и с другим - значит оба объекта есть в этой точке - значит они пересекаются) Однако это очень грубо и тут есть что оптимизировать |
короче, когда увидишь что hitTestObject возвращает true, делаешь следующее:
1)находишь bounds обоих объектов относительно чегото одного. Находим координаты центров двух объектов и смотрим где первый относительно другого. Если с верху и с лева (как на рисунке), находим правый край первого и левый второго, также нижний первого и верхний второго. таким образом мы можем определить зону где теоретически могло быть столкновение для каждого объекта. 2)ту зону рисуем в прозрачной битмапдате. находим точки с альфой имеющей не нулевое значение, граничащие с пикселем с нулевой альфой - это граница. каждый такой пункт загоняем в массив. и прибавляем к нему координаты самого объекта. 3)Таким образом мы получили 2 массива с поинтами в цикле просто проверяем на совпадения. Если границы не имеют общих точек - объекты не пересекаются и нааборот. Как видите - ничего невероятного. |
http://noregret.org/tutor/n/collision/#2.2
На здоровье. |
|
тоже штоле кинуть линк ) http://www.coreyoneil.com/portfolio/index.php?project=5
|
спасибо огромное за ответы.... будем тестить :)))
|
А ещё можно попиксельный хиттест битмапдатами ) *на правах разнообразия*
UUps, dimarik дал двиг именно на пиксельную ) |
| Часовой пояс GMT +4, время: 16:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.