Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Игра с физикой: hitTest 2х сложных объектов (http://www.flasher.ru/forum/showthread.php?t=130103)

Tipon 17.09.2009 18:37

Игра с физикой: hitTest 2х сложных объектов
 
-------------------для ленивых-------------------
Цель: найти Х.У точки пересечений тела с картой, где оба объекта hittest-а сложной и неправильной формы.

Про hitTest я читал и смотрел много разных примеров. Пока не нашел решения, все ещё продолжаю искать...
---------------------------------------------------


-Всё бы хорошо, если вместо моего тела - был бы простой шарик, или карту можно было бы представить как набор правильных сегментов(форм) разложенных по сетке.
-Да и задачу осложняет физика игры, с большим кол-ом ускорений как линейных(по Х,У), так и угловых(вращений).

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

Существует ли вообще другие способы нахождения столкновения сложных объектов?

Был бы очень признателен за любую помощь.

KiL33 17.09.2009 19:22

Цитата:

оба объекта hittest-а сложной и неправильной формы
Для сложных объектов не получится использовать хиттест

Zik. 17.09.2009 19:48

Есть два способа:
1. Легкий способ. Скачать готовый хитТест для абсолютно любых форм. Качаем
2. Трудный способ. Воспользоваться алгеброй/геометрией.
Учимся проверять столкновения двух линий и проверяем каждую линию одного объекта на столкновение с линией другого объекта

Во втором случае идет выйгрышь в производительности

Tipon 17.09.2009 22:31

Ммм... Перебирать все пиксели меньшего объекта на совпадение их с большим в цикле... Я бы не додумался никогда. Не привык решать задачи программирования в лоб. Всё думал, как связать хитТест(точка-заливка) с алгебраич и геометрическими формулами - от чего у меня болит голова уже третий день.

ZIK68 спасибки!
Щас покрутил этот "готовый хитТест" со своими фигурами... От функции с интервалом 10мс проходящей в цыкле ~1500пиксей я думал мой проц вкипит и испарится, ан нет. На AMD x2 6000+ процесс флеш-плеера занимал 15-20%.
И уверен что прыгать с оптимизацией производительности этой функции-цикла можно долго...

mooncar 17.09.2009 22:33

Пример не смотрел.. Но может быть сделать границу меньшего объекта отдельным мувиком, и перебирать при проверке hitTest только его пиксели, то есть пиксели границы?

Tipon 18.09.2009 01:02

Цитата:

Сообщение от mooncar (Сообщение 851660)
может быть сделать границу меньшего объекта отдельным мувиком, и перебирать при проверке hitTest только его пиксели, то есть пиксели границы?

Нет. Приведённый по ссылке выше хитТест просчитывает все пиксели в интервале по Х (длинна объекта) и по У(высота объекта). В итоге что ты не рисуй в мувиках(рамку, контур, любую кривую фигуру) в расчет цикла будут всегда браться все пиксели в пределах высоты и длинны объекта(в пределах его квадратной рамки).

mooncar 18.09.2009 01:38

Ясно. В пределах трех месяцев назад была тема о том же, что и у вас. Поищите...
Если я верно помню, там речь шла о расчете хиттеста по сложной границе объекта, использовались пиксельные функции, кажется.

Zik. 18.09.2009 10:56

Цитата:

Сообщение от Tipon (Сообщение 851658)
ZIK68 спасибки!
Щас покрутил этот "готовый хитТест" со своими фигурами... От функции с интервалом 10мс проходящей в цыкле ~1500пиксей я думал мой проц вкипит и испарится, ан нет. На AMD x2 6000+ процесс флеш-плеера занимал 15-20%.
И уверен что прыгать с оптимизацией производительности этой функции-цикла можно долго...

Ну вы блин, какой у вас компьютер
А представьте вам надо мноого объектов проверять и у конечного пользователя будет слабее комп

Волгоградец 18.09.2009 12:58

http://www.flasher.ru/forum/showthre...hlight=hittest

KiL33 18.09.2009 15:13

может быть, для кого-то это ещё новость..
http://www.freeactionscript.com/2009...ion-detection/


Часовой пояс GMT +4, время: 18:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.