Форум 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 или другой (http://www.flasher.ru/forum/showthread.php?t=120042)

kahoxa 10.01.2009 16:20

hitTest или другой
 
У меня вопрос: Как сделать что бы программа различала какой предмет с каким коснулся.hitTest не помогает он не различает всё равно((((((

Wolsh 10.01.2009 16:41

У меня ответ: hitTest. Только он и "различает".
Пример-то будет, ил нам надо самим догадаться, как написать "неразличающий" хитТест и потом найти способы его исправления?

pool 11.01.2009 14:06

hitTest работает, но он не везде поможет, к примеру, где обьекты за фрэйм успевают пересечь друг-друга, т.е. быстро летают. С другой стороны, вопрос страннный "как сделать чтобы программа различала", ответ - написать эту программу. У всех мувиков есть габариты и координаты, остальное муторная арифметика.

CrazyFlasher 11.01.2009 14:09

Цитата:

муторная арифметика
скорее, царица наук - Математика :)

Fernando Costa 11.01.2009 14:48

если предметы окружности то просто считать расстояние между центрами

pool 11.01.2009 15:17

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

Zik. 11.01.2009 15:39

Вложений: 1
Цитата:

Сообщение от Fernando Costa (Сообщение 789646)
если предметы окружности то просто считать расстояние между центрами

К этому посту прилагаю пример.
P.S: тестировать лучше в самой среде Flash

Psycho Tiger 11.01.2009 22:22

В свое время писал так:
Смотрел, переместился ли предмет на БОЛЬШЕЕ растояние, чем он сам - значит, возможно был проскок. Добавляю впритык его к начальному, проверяю, если все ок, столкновения нет - добавляю следующий и так, пока не дойду до конечного обьекта.
Бен Виниарчик предлагает следующий вариант для столкновения 2 кругов, независящих от фреймов:
1) Составьте уравнения для нахождения x и y положения обоих кругов. Это уравнение основано на x- y- скоростях
2) Примените уравнение для нахождения х и у положения обоих кругов для написания уравнения нахождения расстояния между 2 кругами
3) В уравнении расстояния примените сумму радиусов кругов и решите уравнение для нахождения времени (коим являются фреймы)
4) Сделайте это для каждого фрейма. Если время меньше или равно 1, то столкновение произошло между последним и текущим фреймом.

pool 11.01.2009 23:15

Psycho Tiger, то что предлагает Бен Виниарчик (к сожалению, не знаком с ним) можно написать так - составте уравнения и решите их...или как в Ландавшице - очевидно что решение системы уравнений будет выглядеть так... и остальные вариации.
Не лучшим вариантом помощи топик-стартеру будет написать в добавок, что искать надо времена столкновения внутри кадра, до соударения и после, и по этим временам (и скоростям, соответственно) находить координаты шара в начале следующего кадра для его отображения.
Алгоритм получается такой, что при увеличении шаров количество вычислений увеличивается в факториале и все сильно начинает тормозить...расплата за реальную механику. Я для этого писал уравнения без тригонометрии, но тормоза все равно есть (машинка слабенькая).

...а сильверлайт в 10! раз быстрее и фрамверка.NET ему не нужно.
Зачем за флеш платить 600$, когда добавить половинку и будет новый комп, а все что надо для разработки в MS дают даром. пойду обсудить это во Флейме.

TERRORist 11.01.2009 23:26

Я знаю способ лучше!

1)Составим уравнения движения объектов

2) Для упрощения умножим обе части уравнения на 0

3) Наслаждайтесь стабильной работой приложения

А если серьезно - возьмите готовый физ движок, там все уже написано до вас.


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

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