Это полезно, потому что мы можем обнаружить столкновение до установки положения клипа в сцене. С методом hitTest() объект должен быть физически перемещен на экране, и тогда имеет место обнаружение столкновения, основанное на пересечении двух графических элементов. Мы будем использовать в последующих главах независимых от графики код.
Зависимость от скорости смены кадров. Это ограничение связано с вышеприведенным. Представьте игру типа Теннис: имеется ракетка в 10 единиц шириной с левой стороны экрана. Шар, также шириной 10 единиц, движется по направлению к ракетке со скоростью по x равной -30 единиц за кадр. Возможна ситуация, когда шар находится с правой стороны ракетки в одном кадре и появляется с другой стороны ракетки в следующем кадре. С помощью hitTewst() никакого столкновения не могло бы быть обнаружено, потому что два клипа должны пересекаться на протяжении кадра (или в пределах кадра – для тех из вас, кому удобнее думать о кадрах в терминах физического пространства, нежели протяженности во времени). Недостаточно знать, что шар прошел через ракетку. Используя математику, мы можем сказать, имело ли место столкновение между кадрами.
frame1
кадр1
frame2
кадр2
frame3
кадр3
Столкновение не было обнаружено по причине «дискретной» природы кадров.
Подводя итог, использование математики для обнаружения столкновения позволит вам:
Писать скрипты, которые будут обрабатывать столкновения между неправильными фигурами
Писать независимое от кадров обнаружение столкновения
Обрабатывать как обнаружение столкновения, так и движение в памяти, вместо обнаружения, основанного на определении местоположения графических элементов.
В описаниях к примерам показано, как работать с кодированием обнаружения столкновений между различными типами фигур. Для некоторых из них мы усложняем скрипт обнаружения столкновения таким образом, что он работает независимо от кадров, а для некоторых мы этого не делаем.
Для некоторых видов обнаружения столкновений независимость от кадров не дает нам никаких преимуществ