![]() |
Прыгающий мяч
Привет!
Мне нужно сделать что бы шарик при соприкосновении с поверхностью, отскакивал от нее. Т.е. один мувик отлитал от другого при соприкосновении. Чес скажу, на форме рылся долго. Понял что надо юзать hitTest. Но как его использовать, не понял. Помогите пожалуйста. Спасибо! |
Для плоской поверхности достаточно определять координаты мяча и корректировать их.
|
Вложений: 1
а если мне надо что бы шарик ударялся только от определенного куска поверхности. Незнаю как объяснить.
Короче на картинке, есть шарик (синий) и ящик (красный). Ящик двигается в лево и в право кнопками LEFT и RIGHT. Короче игра где юзер пытается отбить мячик этим самым ящиком. Как быть в таком случае. |
никак не врубаюсь
Код:
ball.onEnterFrame = function() { |
Чтобы определить, пересекаются ли два клипа, метод hitTest() необходимо задействовать в следующей форме:
clip1.hitTest(clip2), здесь clip1 и clip2 — клипы, проверку коллизии которых нужно провести. В качестве результата метод hitTest() возвращает булеву величину true, если клипы имеют общие точки, и false, если они не перекрываются. В идеале факт пересечения двух клипов нужно считать состоявшимся, если у них есть хотя бы по одной заполненной точке, которые имеют одинаковые глобальные координаты. Увы, но проверить коллизию с такой точностью можно далеко не всегда. Для этого пришлось бы последовательно перебрать значительное число точек, что недопустимо с позиции времени выполнения кода. Поэтому метод hitTest() сравнивает не положения заполненных точек двух клипов, а лишь их граничные координаты (получить которые можно, используя метод getBounds()). Это означает, что факт коллизии будет подтвержден не тогда, когда объекты внутренней структуры двух клипов действительно перекрывают друг друга, а тогда, когда пересекаются области, ограниченные описанными вокруг них прямоугольными рамками. В вашем коде проверяется лишь высота двух клипов (прмым сравнением свойства _y клипов). А как же быть если шарик будет падать не на площадку? Подумайте и используйте метод hitTest. |
|
Огромное спасибо за объяснения и ссылку.
Буду думать дальше!:) |
пока что доперло.
Спасибо! Код:
box.onEnterFrame = function() { |
Млин! Да че ж Вы все пишете на клипах. Это некрасиво и не читабельно. Делайте динамику на главной временной шкале.
Сделайте движение мяча в одном обработчике _root.onEnterFrame. События нажатия клавиш onKeyDown сделайте тоже на главной временной шкале но не в onEnterFrame. Код:
Key.addListener(_root); |
Не работает.
Код:
Key.addListener(box);И как сделать что бы не просто перепрыгивал на координату 150, а летел до нее. Сейчас: Код:
ball._y -= 150; |
| Часовой пояс GMT +4, время: 17:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.