Без лишних сложностей, столкновение происходит, когда две различных формы имеют одну или более общих точек. Например, представьте две окружности, соприкасающиеся краями, такие как два бильярдных шара, находящихся один против другого. Эти две окружности имеют одну общую точку; следовательно, в физике они называются столкнувшимися. Некоторые столкновения просты, такие как пересечение курсора мыши с клипом или кнопкой. Другие столкновения сложны, вроде отскакивания шара от наклонной линии.
These circles share one point
Эти окружности имеют одну общую точку
В этой главе мы охватим несколько наиболее общих типов обнаружения столкновений, включая пересечения или столкновения линий с линиями, и прямоугольников с другими прямоугольниками.
Как я упоминал ранее, есть два основных вида программного обнаружения столкновения, используемых во Flash: использование метода hitTest() объекта MoviClip, и использование математики для определения, произошло ли столкновение.
Как вы увидите в дальнейшем в этой главе, hitTest() применяется, но он гораздо хуже для кода обнаружения столкновения, чем использование математики. Используя математику для определения столкновений, вы можете не только определить, произошло ли столкновение, но в некоторых случаях вы можете даже сказать, будет ли столкновение и в каком именно месте произойдет это столкновение. Нам необходим такой уровень точности для некоторых из более сложных типов игр, таких как пинбол или бильярд.
Обнаружение с использованием hitTst()
Как вы, вероятно, знаете, объекты MovieClip во Flash содержат много методов и свойств, которые помогают в работе с клипами. Когда клип создан, в авторской среде разработки или с помощью кода ActionScript, он наследует все методы и свойства объекта MovieClip. Эти методы и свойства становятся после этого доступны для экземпляра нового клипа. Мы можем использовать метод hitTest() объекта MovieClip для обнаружения столкновения в трех простых сценариях