Мы не будем здесь перечислять эти функции, поскольку они идентичны тем, которые мы видели уже несколько раз. Ниже приведена функция is pointRectangleDetection(), которая обнаруживает столкновения между точкой и прямоугольником.
1 function pointRectangleDetection(point,rectangle){
2 //положение точки
3 var x =point.x;
4 var y =point.y;
5 //левая и правая стены
6 var x1 =rectangle.x;
7 var x2 =x1+rectangle.width;
8 //верхняя и нижняя стены
9 var y1 =rectangle.y;
10 var y2 =y1+rectangle.height;
11 //проверьте находится ли точка в пределах стен
12 if (x>x1 &&x<x2 &&y>y1 &&y<y2){
13 trace("Collision Detected!!");
14 }
15 }
Функция принимает два параметра, point и rectangle, которые ссылаются на два объекта. Сначала создаются две переменные, которые представляют положение точки. Затем в строках 6-10, x и y координаты стен присваиваются переменным. Наконец, в строке 12 начинается блок условия, которые проверяет, является ли координата точки x больше чем левая стена, но меньше чем правая стена, и что координата точки y больше чем верхняя стена и меньше чем нижняя стена. Если это условие выполнено, то столкновение произошло, а оператор trace выполняется. Наконец (хотя это не показано выше), событие onEnterFrame вызывает функции getTempPositions(), pointRectangleDetection(), и render() в каждом кадре.
Обнаружение столкновения прямоугольника с прямоугольником
Подобно обнаружению столкновения точки с прямоугольником, обнаружение столкновения между двумя прямоугольниками выполняется легко. Rectangle_a сталкивается с rectangle_b, если все из ниже перечисленного истинно:
1. Координата x правой стенки прямоугольника rectangle_a больше чем координата x левой стенки прямоугольника rectangle_b.
2. Координата x левой стенки rectangle_a меньше чем координата x правой стенки rectangle_b.
3. Координата y нижней стенки rectangle_a больше чем координата y верхней стенки rectangle_b