![]() |
BitmapData.hitTest() для объекта с объектами из массива
Здравствуйте. Я еще новичок, так что извиняюсь за нубский вопрос)
Вопрос который меня интересует - проверка столкновений между объектом игрока и объектами из массива - это 2 разных типа объектов. HitTestObject и HitTestPoint мне не подошли, в силу кривости их проверки для объектов неопределенных форм или я как-то неправильно их готовил... Есть небольшой код. Описание того что в нем происходит: 1)Игрок управляет первым объектом, который привязан к курсору мышки 2) Сверху вниз по (Y), на игрока падают одинаковые клоны второго объекта, созданные через массив. 3) Падающие объекты произвольной формы. форма объекта игрока пока просто - круг, но тоже предполагается произвольная. Гугл подсказал о чудесной проверке по пикселям Bitmapdata.hittest(). Я нашел хороший урок с исходниками, в котором реализована эта тема. Разобрался с ним - смог применить к двум объектам, которые изначально расположены на поле и которые можно таскать курсором. Интегрировать эту проверку для отдельного объекта с объектами появляющимися через массив - не получилось. Может кто-то делал что-то подобное или знает хорошие уроки - поделитесь пожалуйста кодом, ссылками, любой информацией. Если понадобиться, закину сюда исходники кода, но надеюсь и так все понятно. Заранее благодарен |
Почему не получилось? Выкладывайте код. А если по сабжу, пишите функцию, которая проверяет на хиттест 2 объекта (примеров в инете дофига, можно воспользоваться например этим). И внутри обработчика события в цикле перебираете массив объектов с которым надо проверить столкновения
|
Вложений: 1
Как раз и пробовал интегрировать код, из урока выше.
Вкратце про мой проект - он состоял из 3-х классов: описание игрока, описание врага, основной код игры - добавляющий на игровое поле игрока и врагов из массива по таймеру, а так же делал проверку столкновений через HitTestPoint. С ним все работал как надо, но результат не устроил меня, как я писал выше. Прикрепляю его сюда на всякий случай. Код AS1/AS2:
После чего попытался запустить этот класс в своем проекте, через класс с основным кодом игры, но ничего не вышло, на стадии обращения к объектам из массива. Скорее всего я как-то не правильно к ним обращаюсь. Выдает ошибку 1120 - обращение к несуществующему свойству enemy. Прикрепляю код, в котором я пытался запустить проверку BitmapData.hitTest() Код AS1/AS2:
|
Вложений: 1
Ошибка возникает, потому что в checkForCollisions() переменная enemy не объявлена, а в саму функцию вы её не передаете. Читайте про область видимости переменных в as3.
Прилагаю исправленную версию. |
Спасибо большое, разобрался и знаю теперь про что почитать, т.к. думал что проблема в массивах и читал про них)
Теперь возник еще один вопрос попутно... Проверка столкновений в моем проекте работает совсем не как ожидалось - не как в уроке по ссылке. Падающие объекты могут задевать объект игрока и при этом не определяются столкновения. Работает все примерно как при HitTestPoin. В уроке по ссылке столкновения определялись при первом соприкосновении пикселей у проверяемых объектов. Может быть есть какие-то предположения, с чем это связано? Возможно это из-за того, что объекты добавляются в сцену по таймеру, а так же проверка проходит по таймеру? Или есть резон создать для этого вопроса новую тему? |
Значит что то не так сделали, возможно маленький шаг у таймера, попробуйте просто заменить функцию таймера на энтерфрейм.
|
| Часовой пояс GMT +4, время: 02:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.