![]() |
hitTest или другой
У меня вопрос: Как сделать что бы программа различала какой предмет с каким коснулся.hitTest не помогает он не различает всё равно((((((
|
У меня ответ: hitTest. Только он и "различает".
Пример-то будет, ил нам надо самим догадаться, как написать "неразличающий" хитТест и потом найти способы его исправления? |
hitTest работает, но он не везде поможет, к примеру, где обьекты за фрэйм успевают пересечь друг-друга, т.е. быстро летают. С другой стороны, вопрос страннный "как сделать чтобы программа различала", ответ - написать эту программу. У всех мувиков есть габариты и координаты, остальное муторная арифметика.
|
Цитата:
|
если предметы окружности то просто считать расстояние между центрами
|
для окружностей все проще. если предметы кривые, все сильно усложняется и кроме хиттеста и ограничений под него самой задачи ничего не придумать...или царица математика заставит вас рисовать мувики в кривых, следить за пересечениями...и какя же скорость будет на слабой машинке таких полетов.
тут MS сильверлайт продвигают и дают весь набор разработчика безплатно... может и адоб сподобится :) к стати, так и не понял, может на сильверлайт работать какой-нить язык из .NET без фрэмверка .NET, видимо, нет. Т.е. что-бы у юзера все летало, он кроме самого сильверлайта (аналог флэшплеера) должен и .NET себе поставить. Может потому Адоб не торопиться раздавать среду разработки ....это все флуд :) |
Вложений: 1
Цитата:
P.S: тестировать лучше в самой среде Flash |
В свое время писал так:
Смотрел, переместился ли предмет на БОЛЬШЕЕ растояние, чем он сам - значит, возможно был проскок. Добавляю впритык его к начальному, проверяю, если все ок, столкновения нет - добавляю следующий и так, пока не дойду до конечного обьекта. Бен Виниарчик предлагает следующий вариант для столкновения 2 кругов, независящих от фреймов: 1) Составьте уравнения для нахождения x и y положения обоих кругов. Это уравнение основано на x- y- скоростях 2) Примените уравнение для нахождения х и у положения обоих кругов для написания уравнения нахождения расстояния между 2 кругами 3) В уравнении расстояния примените сумму радиусов кругов и решите уравнение для нахождения времени (коим являются фреймы) 4) Сделайте это для каждого фрейма. Если время меньше или равно 1, то столкновение произошло между последним и текущим фреймом. |
Psycho Tiger, то что предлагает Бен Виниарчик (к сожалению, не знаком с ним) можно написать так - составте уравнения и решите их...или как в Ландавшице - очевидно что решение системы уравнений будет выглядеть так... и остальные вариации.
Не лучшим вариантом помощи топик-стартеру будет написать в добавок, что искать надо времена столкновения внутри кадра, до соударения и после, и по этим временам (и скоростям, соответственно) находить координаты шара в начале следующего кадра для его отображения. Алгоритм получается такой, что при увеличении шаров количество вычислений увеличивается в факториале и все сильно начинает тормозить...расплата за реальную механику. Я для этого писал уравнения без тригонометрии, но тормоза все равно есть (машинка слабенькая). ...а сильверлайт в 10! раз быстрее и фрамверка.NET ему не нужно. Зачем за флеш платить 600$, когда добавить половинку и будет новый комп, а все что надо для разработки в MS дают даром. пойду обсудить это во Флейме. |
Я знаю способ лучше!
1)Составим уравнения движения объектов 2) Для упрощения умножим обе части уравнения на 0 3) Наслаждайтесь стабильной работой приложения А если серьезно - возьмите готовый физ движок, там все уже написано до вас. |
| Часовой пояс GMT +4, время: 10:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.