![]() |
Подскажите, плзь, идею про столкновения в играх :)
Приветствую.
Итак, простой hitTest чуууть не устраивает по той причине, что если объекты даже лишь коснутся друг друга, он уже сработает. Проверка по мере приближения к x и y объекта, тоже не вариант, так как объект с которым возможно столкновение может быть вытянутым. Если попытаться сформулировать с точки зрения программинга, то идельным было бы решение - коллизить объекты по их "графическому объёму" :) минус несколько пикселей. В общем, ищу не конкретного решения :) так как ничего толком и не описал, а скоре идей - как коллизить объекты, чтобы было и изящно(! - меньше вычислений) и удовлетворяло бы потребностям :) |
Вложений: 4
Использовать BitmapData.
Когда на сцене появляется объект, с которым возможно столкновение, создавать BitmapData с копией этого объекта (методом BitmapData.draw()). Потом, например, BitmapDat`у сделать оттенками серого и размыть фильтром. А когда считать столкновения — брать значение цвета пикселя у картинки и по этому значению определять столкновение. Я проиллюстрирую идею: То, как должно происходить столкновение: Вложение 23733 1. Создаем BitmapData с прозрачным фоном и убираем насыщенность и контраст. Вложение 23734 2. Применяем блюр с параметрами размытия аналогичными тому, насколько другой объект может "въехать" в этот. Вложение 23735 3. Когда необходим расчет столкновения, берем значение цвета пикселя у BitmapData c теми же координатами, что и у объекта, который сталкивается. Вложение 23736 Вот как-то так. В принципе, для всех объектов, которые могут сталкиваться, можно создавать свойство с их BitmapData. И производить расчет "глубины" столкновения только когда hitTest() вернет true, то есть объекты габаритно пересекутся. За оптимальность и изящность такого метода не ручаюсь, сам такое не пробовал, но, думаю, работать должно. |
ага, попробую.
Пока придумал вот что... (просьба громко не смеятся :)) аттачить к клипам невидимые клипы, но меньше и их-то и коллизить. вроде работает... хм... пока но что-то подсказывает, что должно быть какое-то более изысканное решение. |
Вот, посмотрите.
|
О, спасибо за ресурс и ссылку !
|
| Часовой пояс GMT +4, время: 15:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.