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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 12.08.2005, 17:30
F_Flash вне форума Посмотреть профиль Отправить личное сообщение для F_Flash Найти все сообщения от F_Flash
  № 11  
Ответить с цитированием
F_Flash
 
Аватар для F_Flash

Регистрация: Feb 2002
Сообщений: 358
Отправить сообщение для F_Flash с помощью ICQ
1.Хит тест для объектов не прокатывает т.к. он смотрит не по форме объекта а по боудинбоксу объектов. т.е. по прямоугольным рамкам грубо говоря которые описаны вокруг объектов.
2. ЧТоб решить эту проблему есть только один способ создавать для каждого объекта набор вершин замыкание которых обарзуют форму объекта. И столкновение проверять если хотябы одна из вершин оджного объекта принадлежит отбласти дркгого объекта то столкновение произошло. ОЧень верно было замечено что если набор вершин составляет выпуклую форму то это сильно упрощает расчет. Кроме того в HAVOK точно так же используется понятие боудинбокса, и просчет столкновения (коллижна) может проходить по нескольким параметрам
- ПО прямоугольнику
- ПО сетке натянутой на обхект , чтоб добиться выпуклой ыормы. т.е. игнорируются все впуклости.
- ПО непосредсвенно самой сетке.
- ПО спесиально созданному дополнительному объекту.

Кстати просчитать коллижн для объекта круглой формы это самый быстрый метод.

Для того чтобя из рисунка нарисовнного получить програмно набор точек, можно хиттестом создесть массив точек которые пиняджлежат объекту(т.к. getPixel до 8-й версии функция еще отсутсвует), т.е. создат бинарную карту с экрана, найти у этой карты описывающие точки и проаксимировать край. ПАрамер апроксимации можно создать разный, так же например для созданиф создение выпуклой описывающей формы.
3. ЧТоб объект не заскивал на другой объект, нужно при столкновении искать точку соприкосновения до столкновения, вычисляя дистанцию для обоих объектов по их пути до то чтоки соприкосновения. И в этом же кадре дать координату отхода.
4. ЧТоб объекты не проскаивали друг через друга на большой скорости.

- проверять пересекались ли их отрезки пути сзахватом на размер объхекта, здесь можно использовать окружность в качестве боудинг бокса.

А вообще самый правильный путь реализации движка физики для флеша.

Это использования примитивов описанных вокруг формы объекта.
- Окружность.
- Прямоугольник
- Многоугольник.

Но если например будет 10 многоугольников скажем по 10 вершин в каждом то это будет ж...а. т.к. флеш такая штука тормозная... Где на создании например переменной уходит куча времени. т.е. теаритически Full Phizic Enfine реализовать можно, но практически нет из за того что он интерпретируемый. Машин таких не придумали еще.




Интересный пример.
Вариант1

x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt(dx*dx+dy*dy);

Вариант2

x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));


ка не странно, вариант 2 работает выстрее.

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

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

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


 


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


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