|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2006
Сообщений: 18
|
Игра с физикой: hitTest 2х сложных объектов
-------------------для ленивых-------------------
Цель: найти Х.У точки пересечений тела с картой, где оба объекта hittest-а сложной и неправильной формы. Про hitTest я читал и смотрел много разных примеров. Пока не нашел решения, все ещё продолжаю искать... --------------------------------------------------- -Всё бы хорошо, если вместо моего тела - был бы простой шарик, или карту можно было бы представить как набор правильных сегментов(форм) разложенных по сетке. -Да и задачу осложняет физика игры, с большим кол-ом ускорений как линейных(по Х,У), так и угловых(вращений). На ум приходит только один способ: Утыкать все выступающие элементы тела точками и проверять уже их столкновение с картой поотдельности(элементарным хиттестом точки с заливкой карты), но тут то и возникает основная проблема. Сколько бы ни было точек на поверхности тела, возможно столкновение с очень острым и сильно выступающим фрагментом карты, где подобное событие не будет зафиксировано, либо станет причиной совершенно не правильной реакции на него. Но даже если закрыть глаза на небольшую вероятность подобной проблемы, сам способ достаточно сложный для программирования и для вычисления на слабых машинах. Существует ли вообще другие способы нахождения столкновения сложных объектов? Был бы очень признателен за любую помощь. |
|
|||||
Цитата:
|
|
|||||
Регистрация: Nov 2007
Сообщений: 1,723
|
Есть два способа:
1. Легкий способ. Скачать готовый хитТест для абсолютно любых форм. Качаем 2. Трудный способ. Воспользоваться алгеброй/геометрией. Учимся проверять столкновения двух линий и проверяем каждую линию одного объекта на столкновение с линией другого объекта Во втором случае идет выйгрышь в производительности |
|
|||||
Регистрация: Jan 2006
Сообщений: 18
|
Ммм... Перебирать все пиксели меньшего объекта на совпадение их с большим в цикле... Я бы не додумался никогда. Не привык решать задачи программирования в лоб. Всё думал, как связать хитТест(точка-заливка) с алгебраич и геометрическими формулами - от чего у меня болит голова уже третий день.
ZIK68 спасибки! Щас покрутил этот "готовый хитТест" со своими фигурами... От функции с интервалом 10мс проходящей в цыкле ~1500пиксей я думал мой проц вкипит и испарится, ан нет. На AMD x2 6000+ процесс флеш-плеера занимал 15-20%. И уверен что прыгать с оптимизацией производительности этой функции-цикла можно долго... |
|
|||||
Модрон-ветеринар
|
Пример не смотрел.. Но может быть сделать границу меньшего объекта отдельным мувиком, и перебирать при проверке hitTest только его пиксели, то есть пиксели границы?
|
|
|||||
Регистрация: Jan 2006
Сообщений: 18
|
Нет. Приведённый по ссылке выше хитТест просчитывает все пиксели в интервале по Х (длинна объекта) и по У(высота объекта). В итоге что ты не рисуй в мувиках(рамку, контур, любую кривую фигуру) в расчет цикла будут всегда браться все пиксели в пределах высоты и длинны объекта(в пределах его квадратной рамки).
|
|
|||||
Модрон-ветеринар
|
Ясно. В пределах трех месяцев назад была тема о том же, что и у вас. Поищите...
Если я верно помню, там речь шла о расчете хиттеста по сложной границе объекта, использовались пиксельные функции, кажется. |
|
|||||
Регистрация: Nov 2007
Сообщений: 1,723
|
Цитата:
А представьте вам надо мноого объектов проверять и у конечного пользователя будет слабее комп |
|
|||||
|
|
|||||
может быть, для кого-то это ещё новость..
http://www.freeactionscript.com/2009...ion-detection/ |
Часовой пояс GMT +4, время: 00:47. |
|
« Предыдущая тема | Следующая тема » |
Теги |
hittest |
|
|