|
|
|
| Здравствуйте.
Подскажите пожалуйста, как можно реализовать след. задачу во Flash:
----------------------------------
| шарик |
| O |
| _ |
| / \ |
| "ракетка" | | |
----------------------------------
|
Шарик летает внутри ограниченной плоскости и отскакивает от ее стенок. По нижней границе ездит "ракетка" в форме полушара. Требуется сделать так, чтобы при ударе мячика о "ракетку", он отлетал под "правильным" углом.
Пробовал с hitTest-ми (raketka.hitTest(ball)), но данный способ не подходит, т. к. hitTest ракетки - квадрат... | |
|
|
|
|
|
|
|
для: name
(29.10.2006 в 17:10)
| | тут нужна математика. никаких хиттестов.
алгоритм такой.
- рассчитываешь расстояние между центром шарика и серединой основания ракетки (на каждый кадр)
-усли расстояние меньше чем радиус мячика+ радиус ракетки - значит есть столкновение - переходишь к расчету угла (насколько помню math.atan2() используется.)
--------
если не выйдет - напомни завтра, пример сделаю. | |
|
|
|
|
 267.5 Кб |
|
|
для: AlexSol
(29.10.2006 в 17:31)
| | У меня не получилось.
Прикрепляю fla файл, думаю, все поймешь. Если сможешь, то сделай след.: если мячик соприкасается с битком под 90 гр., то мячик отлетает по прямой лини вверх; если в промежутке от 0-90(90-180) гр., то по параболе; а если в 0 гр., то по прямой линии влево ил вправо (180).
Заранее БОЛЬШОЕ СПАСИБО! | |
|
|
|
|
|
|
|
для: name
(30.10.2006 в 13:18)
| | вечером либо завтра. | |
|
|
|
|
|
|
|
для: AlexSol
(30.10.2006 в 16:21)
| | Ok | |
|
|
|
|
|
|
|
для: name
(30.10.2006 в 16:35)
| | на скорую руку -- пример по первому вопросу (кликне вне предела окружности).
код не идеален, поскольку при столкновение фигур они всетаки пересекаются, чего быть не болжно. также несколько примеров по мтолкновениям и реакциям. | |
|
|
|
|
|
|
|
для: AlexSol
(30.10.2006 в 21:18)
| | +архив | |
|
|
|
|
|
|
|
для: AlexSol
(30.10.2006 в 21:20)
| | Спасибо большое. | |
|
|
|
|
|
|
|
для: AlexSol
(30.10.2006 в 21:20)
| | У меня еще вопрос - из какой книги данные примеры? | |
|
|
|
|
|
|
|
|
для: AlexSol
(31.10.2006 в 15:03)
| | AlexSol, в приведенном тобой примере вектор скорости всегда направлен в центр окружности, поэтому достаточно умножить clip.xmov и clip.ymov на -1 и все работает (может быть, я и ошибаюсь). Но может, подскажешь, как рассчитывать x, y - если у меня окружность не статична, а передвигается по x и y? | |
|
|
|
|
|
|
|
для: name
(31.10.2006 в 23:22)
| | это сложнее.
условие изменения скорости тоже - если расстояние между центрами меньше сумммы радиусов, а вот векторы скорости считаются подругому, это точно.
вобщем нужна геометрия (в аттаче примерная схема).
можешь задть вопрос на http://flasher.ru/forum/, тока сформулируй получше.
я могу на выходных подумать - на первый взгляд не очень сложно. | |
|
|
|
|
|
|
|
для: AlexSol
(01.11.2006 в 10:00)
| | У меня еще вопрос - может быть ты знаешь, еще принцип проверки на касание двух шариков. Просто у меня проблема при касании по бокам (по X), т. к. шарик2 (бита) передвигается по оси x.
И при увеличении "скорости" движения (число Vx) шарик1 заходит внутрь шарика2...
Пробовал _droptarget-ом - не получилось. | |
|
|
|
|
|
|
|
для: name
(02.11.2006 в 15:40)
| | похоже не тот ахив выложил :)
автор: AlexSol (30.10.2006 в 21:20) --- пример Chapter05/circle_circle1.swf + circle_circle2.swf
-там отслеживается столкновение. где-то был пример с реакцией.... вечером гляну. | |
|
|
|
|
|
|
|
для: AlexSol
(02.11.2006 в 16:00)
| | Ok | |
|
|
|
|
|
|
|
для: name
(02.11.2006 в 15:40)
| | конкретно твою задачу попробую на выходных сделать , погоняю мыслю :).
а механизм такой - вводишь логическую переменную flag=false:
при слоскновение - flag=true; - и дальше , если flag==true то таже если шарик заходит в биту еще одно столкновение не обрабатывать. а когда расстояние между центрами увеличится в два раза - flag=false. | |
|
|
|
|
|
|
|
для: AlexSol
(02.11.2006 в 16:04)
| | Спасибо тебе большое за советы, я уже реализовал идею с флагами...
Если тебе интересно, то посмотри, что получается, прикрепляю исх. Оценишь все достоинства и недостатки :). | |
|
|
|
|
|
|
|
для: name
(02.11.2006 в 16:32)
| | оценивать времени надо много, но то что код в сто строк - это плюс (а то последний проект у меня вышел в 1500 строк =)) http://puzzlepak.com/archive/main_cro_NEW.swf.)
попробую на выходных сделать это дело с нуля ради интереса. | |
|
|
|
|
|
|
|
для: AlexSol
(02.11.2006 в 16:50)
| | Если быть точным - задача стоит след.: сделать игру "волейбол". Идею взял с подобной игры, где на bg океан с пальмами, а фигурки красного и зеленого цвета. По середине сетка (линия по оси Y). Выигрывает тот игрок, который наберет первым 15 очков, ну и т. д.
P. S. А потом все это дело заточить под Red5... | |
|
|
|
|
|
|
|
для: name
(02.11.2006 в 18:27)
| | ну про идею-то ясно =)
очень вероятно что я видел и то, что тебя вдохновило (например тврчество от miniclip)
а вот Red5 мне ни о чем не говорит. | |
|
|
|