У меня проблема с игрой, которую я делаю. У меня в основном есть объекты, которые находятся на карте, и я должен проверять каждую из них, если они сталкиваются со стенами (а затем делают что-то). Поскольку я работал с AS2, я думал о том, как сделать то же самое: я рисовал картину только с стенами, поэтому только прямоугольники и все остальное между ними прозрачно (не существует, а затем пол, например). В AS2 я помещал изображение на экран, назовем его стеной, а затем я сделал hitTest на стене с каждым объектом. Это, например, объект был на самом деле на изображении, так как прозрачные части были его частью, но функция проверялась только на видимые части, а значит и на стенах. Так оно и работало.Эффективное обнаружение столкновений в AS3
Сейчас в AS3 нет HitTest
, но hitTestObject
, который я использовал, и я делаю например wall.hitTestObject(object)
. Проблема в том, что эта функция выглядит так, как будто она не видит прозрачные пленки, а объекты, не касаясь стен, сталкиваются с ними!
Я нашел PixelPerfectCollisionDetection
, что на самом деле решает проблему, но она огромна и тяжела, поэтому в моем случае с таким количеством объектов, которые будут проверяться (по крайней мере 60) на каждом кадре, игра замедляет много!
Мне нужна функция, такая как hitTestObject
(мне не нужна большая точность!), Которые заботятся о прозрачных частях изображения.
Как я могу это сделать?
В AS3 есть библиотеки высокой производительности, которые можно использовать как Box2D. – Marty
вы можете попытаться оптимизировать свое обнаружение столкновения - например: проверьте, чтобы 2 объекта находились на подходящем расстоянии друг от друга, прежде чем использовать (медленный) hitTestObject. –