Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Flash
 
 автор: name   (29.10.2006 в 17:10)   письмо автору
 
 

Здравствуйте.

Подскажите пожалуйста, как можно реализовать след. задачу во Flash:


----------------------------------
|           шарик                |
|         O                      |
|                      _         |
|                     / \        |
|         "ракетка"  |   |       |
----------------------------------


Шарик летает внутри ограниченной плоскости и отскакивает от ее стенок. По нижней границе ездит "ракетка" в форме полушара. Требуется сделать так, чтобы при ударе мячика о "ракетку", он отлетал под "правильным" углом.

Пробовал с hitTest-ми (raketka.hitTest(ball)), но данный способ не подходит, т. к. hitTest ракетки - квадрат...

   
 
 автор: AlexSol   (29.10.2006 в 17:31)   письмо автору
 
   для: name   (29.10.2006 в 17:10)
 

тут нужна математика. никаких хиттестов.

алгоритм такой.
- рассчитываешь расстояние между центром шарика и серединой основания ракетки (на каждый кадр)
-усли расстояние меньше чем радиус мячика+ радиус ракетки - значит есть столкновение - переходишь к расчету угла (насколько помню math.atan2() используется.)

--------
если не выйдет - напомни завтра, пример сделаю.

   
 
 автор: name   (30.10.2006 в 13:18)   письмо автору
267.5 Кб
 
   для: AlexSol   (29.10.2006 в 17:31)
 

У меня не получилось.

Прикрепляю fla файл, думаю, все поймешь. Если сможешь, то сделай след.: если мячик соприкасается с битком под 90 гр., то мячик отлетает по прямой лини вверх; если в промежутке от 0-90(90-180) гр., то по параболе; а если в 0 гр., то по прямой линии влево ил вправо (180).

Заранее БОЛЬШОЕ СПАСИБО!

   
 
 автор: AlexSol   (30.10.2006 в 16:21)   письмо автору
 
   для: name   (30.10.2006 в 13:18)
 

вечером либо завтра.

   
 
 автор: name   (30.10.2006 в 16:35)   письмо автору
 
   для: AlexSol   (30.10.2006 в 16:21)
 

Ok

   
 
 автор: AlexSol   (30.10.2006 в 21:18)   письмо автору
 
   для: name   (30.10.2006 в 16:35)
 

на скорую руку -- пример по первому вопросу (кликне вне предела окружности).
код не идеален, поскольку при столкновение фигур они всетаки пересекаются, чего быть не болжно. также несколько примеров по мтолкновениям и реакциям.

   
 
 автор: AlexSol   (30.10.2006 в 21:20)   письмо автору
 
   для: AlexSol   (30.10.2006 в 21:18)
 

+архив

   
 
 автор: name   (30.10.2006 в 22:12)   письмо автору
 
   для: AlexSol   (30.10.2006 в 21:20)
 

Спасибо большое.

   
 
 автор: name   (31.10.2006 в 14:34)   письмо автору
 
   для: AlexSol   (30.10.2006 в 21:20)
 

У меня еще вопрос - из какой книги данные примеры?

   
 
 автор: AlexSol   (31.10.2006 в 15:03)   письмо автору
 
   для: name   (31.10.2006 в 14:34)
 

http://www.flashblog.ru/?p=77

   
 
 автор: name   (31.10.2006 в 23:22)   письмо автору
 
   для: AlexSol   (31.10.2006 в 15:03)
 

AlexSol, в приведенном тобой примере вектор скорости всегда направлен в центр окружности, поэтому достаточно умножить clip.xmov и clip.ymov на -1 и все работает (может быть, я и ошибаюсь). Но может, подскажешь, как рассчитывать x, y - если у меня окружность не статична, а передвигается по x и y?

   
 
 автор: AlexSol   (01.11.2006 в 10:00)   письмо автору
 
   для: name   (31.10.2006 в 23:22)
 

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

можешь задть вопрос на http://flasher.ru/forum/, тока сформулируй получше.

я могу на выходных подумать - на первый взгляд не очень сложно.

   
 
 автор: name   (02.11.2006 в 15:40)   письмо автору
 
   для: AlexSol   (01.11.2006 в 10:00)
 

У меня еще вопрос - может быть ты знаешь, еще принцип проверки на касание двух шариков. Просто у меня проблема при касании по бокам (по X), т. к. шарик2 (бита) передвигается по оси x.
И при увеличении "скорости" движения (число Vx) шарик1 заходит внутрь шарика2...

Пробовал _droptarget-ом - не получилось.

   
 
 автор: AlexSol   (02.11.2006 в 16:00)   письмо автору
 
   для: name   (02.11.2006 в 15:40)
 

похоже не тот ахив выложил :)
автор: AlexSol (30.10.2006 в 21:20) --- пример Chapter05/circle_circle1.swf + circle_circle2.swf
-там отслеживается столкновение. где-то был пример с реакцией.... вечером гляну.

   
 
 автор: name   (02.11.2006 в 16:01)   письмо автору
 
   для: AlexSol   (02.11.2006 в 16:00)
 

Ok

   
 
 автор: AlexSol   (02.11.2006 в 16:04)   письмо автору
 
   для: name   (02.11.2006 в 15:40)
 

конкретно твою задачу попробую на выходных сделать , погоняю мыслю :).

а механизм такой - вводишь логическую переменную flag=false:

при слоскновение - flag=true; - и дальше , если flag==true то таже если шарик заходит в биту еще одно столкновение не обрабатывать. а когда расстояние между центрами увеличится в два раза - flag=false.

   
 
 автор: name   (02.11.2006 в 16:32)   письмо автору
 
   для: AlexSol   (02.11.2006 в 16:04)
 

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

   
 
 автор: AlexSol   (02.11.2006 в 16:50)   письмо автору
 
   для: name   (02.11.2006 в 16:32)
 

оценивать времени надо много, но то что код в сто строк - это плюс (а то последний проект у меня вышел в 1500 строк =)) http://puzzlepak.com/archive/main_cro_NEW.swf.)

попробую на выходных сделать это дело с нуля ради интереса.

   
 
 автор: name   (02.11.2006 в 18:27)   письмо автору
 
   для: AlexSol   (02.11.2006 в 16:50)
 

Если быть точным - задача стоит след.: сделать игру "волейбол". Идею взял с подобной игры, где на bg океан с пальмами, а фигурки красного и зеленого цвета. По середине сетка (линия по оси Y). Выигрывает тот игрок, который наберет первым 15 очков, ну и т. д.

P. S. А потом все это дело заточить под Red5...

   
 
 автор: AlexSol   (02.11.2006 в 20:16)   письмо автору
 
   для: name   (02.11.2006 в 18:27)
 

ну про идею-то ясно =)
очень вероятно что я видел и то, что тебя вдохновило (например тврчество от miniclip)

а вот Red5 мне ни о чем не говорит.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования