Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подскажите, плзь, идею про столкновения в играх :) (http://www.flasher.ru/forum/showthread.php?t=135727)

Boris 30.01.2010 16:57

Подскажите, плзь, идею про столкновения в играх :)
 
Приветствую.
Итак, простой hitTest чуууть не устраивает по той причине, что если объекты даже лишь коснутся друг друга, он уже сработает.
Проверка по мере приближения к x и y объекта, тоже не вариант, так как объект с которым возможно столкновение может быть вытянутым.

Если попытаться сформулировать с точки зрения программинга, то идельным было бы решение - коллизить объекты по их "графическому объёму" :) минус несколько пикселей.

В общем, ищу не конкретного решения :) так как ничего толком и не описал, а скоре идей - как коллизить объекты, чтобы было и изящно(! - меньше вычислений) и удовлетворяло бы потребностям :)

Hauts 30.01.2010 17:26

Вложений: 4
Использовать BitmapData.

Когда на сцене появляется объект, с которым возможно столкновение, создавать BitmapData с копией этого объекта (методом BitmapData.draw()). Потом, например, BitmapDat`у сделать оттенками серого и размыть фильтром. А когда считать столкновения — брать значение цвета пикселя у картинки и по этому значению определять столкновение.

Я проиллюстрирую идею:
То, как должно происходить столкновение:
Вложение 23733

1. Создаем BitmapData с прозрачным фоном и убираем насыщенность и контраст.
Вложение 23734

2. Применяем блюр с параметрами размытия аналогичными тому, насколько другой объект может "въехать" в этот.

Вложение 23735

3. Когда необходим расчет столкновения, берем значение цвета пикселя у BitmapData c теми же координатами, что и у объекта, который сталкивается.

Вложение 23736

Вот как-то так. В принципе, для всех объектов, которые могут сталкиваться, можно создавать свойство с их BitmapData. И производить расчет "глубины" столкновения только когда hitTest() вернет true, то есть объекты габаритно пересекутся.

За оптимальность и изящность такого метода не ручаюсь, сам такое не пробовал, но, думаю, работать должно.

Boris 30.01.2010 18:46

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

Hauts 30.01.2010 19:00

Вот, посмотрите.

Boris 30.01.2010 21:07

О, спасибо за ресурс и ссылку !


Часовой пояс GMT +4, время: 15:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.