
13.06.2013, 19:57
|
|
Регистрация: Jan 2013
Сообщений: 550
|
Ну если брать большие уровни, то придется забивать их все в массив и проверять столкновение с каждым в отдельности) Еще один способ - нарисовать уровень (если вы работаете во Flash IDE - это вообще дело пары минут) и проверять не .hitTestObject, не .intersects, а .hitTestPoint - проверка столкновения точки (обычно y - самая нижняя точка героя, а x - середина героя) с конкретными пикселями объекта - игнорируя прозрачные места.
Я тоже какое то время назад занимался "разработкой" "движка" столкновений (учить готовые движки Box2D или Nape было очень лень, а со столкновениями я до этого работал какое то время)а потом мне пришлось пересесть с обычной векторной флеш графики на растровую - на фреймворк Starling. Там столкновения представлены немного интересней - при наличии на сцене нескольких объектов - платформ, их не нужно забивать в массивы - стандартный старлинговский метод .hitTest возвращает объект, с которым сталкивается другой объект (за этим, конечно, стоит проверка столкновений в цикле, но она по крайней мере хорошо оптимизирована) и героя можно выравнивать уже по отношению к возвращенному объекту.
Что касается Ваших вопросов - самым дешевым способом проверить столкновения является проверка столкновений ограничивающих прямоугольников, то есть intersects (Кстати, в каком классе реализован этот метод? В классе платформы?). В данном случае .getRect() нужен для использования свойств .left и .right конкретной платформы (если этот метод в классе платформы)
|