![]() |
|
||||||||||
|
|||||
|
Banned
[+1.3 10.05.09]
[+1.4 10.05.09] [++1.4 10.05.09] Регистрация: Jan 2009
Сообщений: 18
|
У меня вопрос: Как сделать что бы программа различала какой предмет с каким коснулся.hitTest не помогает он не различает всё равно((((((
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
У меня ответ: hitTest. Только он и "различает".
Пример-то будет, ил нам надо самим догадаться, как написать "неразличающий" хитТест и потом найти способы его исправления?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2002
Адрес: СПб
Сообщений: 22
|
hitTest работает, но он не везде поможет, к примеру, где обьекты за фрэйм успевают пересечь друг-друга, т.е. быстро летают. С другой стороны, вопрос страннный "как сделать чтобы программа различала", ответ - написать эту программу. У всех мувиков есть габариты и координаты, остальное муторная арифметика.
|
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
Цитата:
![]() |
|
|||||
|
Регистрация: Sep 2002
Адрес: СПб
Сообщений: 22
|
для окружностей все проще. если предметы кривые, все сильно усложняется и кроме хиттеста и ограничений под него самой задачи ничего не придумать...или царица математика заставит вас рисовать мувики в кривых, следить за пересечениями...и какя же скорость будет на слабой машинке таких полетов.
тут MS сильверлайт продвигают и дают весь набор разработчика безплатно... может и адоб сподобится к стати, так и не понял, может на сильверлайт работать какой-нить язык из .NET без фрэмверка .NET, видимо, нет. Т.е. что-бы у юзера все летало, он кроме самого сильверлайта (аналог флэшплеера) должен и .NET себе поставить. Может потому Адоб не торопиться раздавать среду разработки....это все флуд ![]() |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
Цитата:
P.S: тестировать лучше в самой среде Flash |
|
|||||
|
В свое время писал так:
Смотрел, переместился ли предмет на БОЛЬШЕЕ растояние, чем он сам - значит, возможно был проскок. Добавляю впритык его к начальному, проверяю, если все ок, столкновения нет - добавляю следующий и так, пока не дойду до конечного обьекта. Бен Виниарчик предлагает следующий вариант для столкновения 2 кругов, независящих от фреймов: 1) Составьте уравнения для нахождения x и y положения обоих кругов. Это уравнение основано на x- y- скоростях 2) Примените уравнение для нахождения х и у положения обоих кругов для написания уравнения нахождения расстояния между 2 кругами 3) В уравнении расстояния примените сумму радиусов кругов и решите уравнение для нахождения времени (коим являются фреймы) 4) Сделайте это для каждого фрейма. Если время меньше или равно 1, то столкновение произошло между последним и текущим фреймом.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Sep 2002
Адрес: СПб
Сообщений: 22
|
Psycho Tiger, то что предлагает Бен Виниарчик (к сожалению, не знаком с ним) можно написать так - составте уравнения и решите их...или как в Ландавшице - очевидно что решение системы уравнений будет выглядеть так... и остальные вариации.
Не лучшим вариантом помощи топик-стартеру будет написать в добавок, что искать надо времена столкновения внутри кадра, до соударения и после, и по этим временам (и скоростям, соответственно) находить координаты шара в начале следующего кадра для его отображения. Алгоритм получается такой, что при увеличении шаров количество вычислений увеличивается в факториале и все сильно начинает тормозить...расплата за реальную механику. Я для этого писал уравнения без тригонометрии, но тормоза все равно есть (машинка слабенькая). ...а сильверлайт в 10! раз быстрее и фрамверка.NET ему не нужно. Зачем за флеш платить 600$, когда добавить половинку и будет новый комп, а все что надо для разработки в MS дают даром. пойду обсудить это во Флейме. |
|
|||||
|
Я знаю способ лучше!
1)Составим уравнения движения объектов 2) Для упрощения умножим обе части уравнения на 0 3) Наслаждайтесь стабильной работой приложения А если серьезно - возьмите готовый физ движок, там все уже написано до вас. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|