Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.09.2009, 18:37
Tipon вне форума Посмотреть профиль Отправить личное сообщение для Tipon Найти все сообщения от Tipon
  № 1  
Ответить с цитированием
Tipon

Регистрация: Jan 2006
Сообщений: 18
Question Игра с физикой: hitTest 2х сложных объектов

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

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


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

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

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

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

Старый 17.09.2009, 19:22
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 2  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Цитата:
оба объекта hittest-а сложной и неправильной формы
Для сложных объектов не получится использовать хиттест

Старый 17.09.2009, 19:48
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 3  
Ответить с цитированием
Zik.
 
Аватар для Zik.

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

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

Старый 17.09.2009, 22:31
Tipon вне форума Посмотреть профиль Отправить личное сообщение для Tipon Найти все сообщения от Tipon
  № 4  
Ответить с цитированием
Tipon

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

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

Старый 17.09.2009, 22:33
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Пример не смотрел.. Но может быть сделать границу меньшего объекта отдельным мувиком, и перебирать при проверке hitTest только его пиксели, то есть пиксели границы?

Старый 18.09.2009, 01:02
Tipon вне форума Посмотреть профиль Отправить личное сообщение для Tipon Найти все сообщения от Tipon
  № 6  
Ответить с цитированием
Tipon

Регистрация: Jan 2006
Сообщений: 18
Цитата:
Сообщение от mooncar Посмотреть сообщение
может быть сделать границу меньшего объекта отдельным мувиком, и перебирать при проверке hitTest только его пиксели, то есть пиксели границы?
Нет. Приведённый по ссылке выше хитТест просчитывает все пиксели в интервале по Х (длинна объекта) и по У(высота объекта). В итоге что ты не рисуй в мувиках(рамку, контур, любую кривую фигуру) в расчет цикла будут всегда браться все пиксели в пределах высоты и длинны объекта(в пределах его квадратной рамки).

Старый 18.09.2009, 01:38
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ясно. В пределах трех месяцев назад была тема о том же, что и у вас. Поищите...
Если я верно помню, там речь шла о расчете хиттеста по сложной границе объекта, использовались пиксельные функции, кажется.

Старый 18.09.2009, 10:56
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 8  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,723
Цитата:
Сообщение от Tipon Посмотреть сообщение
ZIK68 спасибки!
Щас покрутил этот "готовый хитТест" со своими фигурами... От функции с интервалом 10мс проходящей в цыкле ~1500пиксей я думал мой проц вкипит и испарится, ан нет. На AMD x2 6000+ процесс флеш-плеера занимал 15-20%.
И уверен что прыгать с оптимизацией производительности этой функции-цикла можно долго...
Ну вы блин, какой у вас компьютер
А представьте вам надо мноого объектов проверять и у конечного пользователя будет слабее комп

Старый 18.09.2009, 12:58
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 9  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
http://www.flasher.ru/forum/showthre...hlight=hittest

Старый 18.09.2009, 15:13
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 10  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
может быть, для кого-то это ещё новость..
http://www.freeactionscript.com/2009...ion-detection/

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
hittest
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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