4. Координата y верхней стенки rectangle_a меньше чем координата y нижней стенки rectangle_b.
Они сталкиваются!
Для просмотра примера, откройте файл rectangle_rectangle.fla из папки Chapter05 на CD. Код ActionScript в этом файле очень схож с предыдущим примером, поэтому мы рассмотрим лишь функцию, которая обрабатывает обнаружение столкновения, RectangleRectangleDetection(). Ниже приведен ее код на ActionScript:
1 function RectangleRectangleDetection(rectangle_a,
.rectangle_b){
2 //левая и правая стены
3 var x_a1 =rectangle_a.x;
4 var x_a2 =x_a1+rectangle_a.width;
5 //верхняя и нижняя стены
6 var y_a1 =rectangle_a.y;
7 var y_a2 =y_a1+rectangle_a.height;
8 //левая и правая стены
9 var x_b1 =rectangle_b.x;
10 var x_b2 =x_b1+rectangle_b.width;
11 //верхняя и нижняя стены
12 var y_b1 =rectangle_b.y;
13 var y_b2 =y_b1+rectangle_b.height;
14 //проверьте, находится ли точка в пределах стен
15 if ((x_a2>x_b1 &&x_a1<x_b2)&&(y_a2>y_b1 &&y_a1<y_b2))
16 {
17 trace("Collision Detected!!");
18 }
19 }
Эта функция принимает два параметра, rectangle_a и rectangle_b, которые ссылаются на объекты. В строках 2-14, мы создаем переменные для хранения координат левой, правой, верхней и нижней стенок обоих прямоугольников. Затем, в строке 15, оператор if использует логику, которую мы упоминали выше для определения, будет ли иметь место столкновение. Он сравнивает координаты стенок в rectangle_a с координатами стенок в rectangle_b. Если условие выполняется, то прямоугольники сталкиваются, и выполняется оператор trace.
Обнаружение столкновения со сложными фигурами
В этой главе вы исследовали логику независимого от кадров обнаружения столкновения и скрипты для столкновений окружности с линией (или столкновений точки с линией, если вы устанавливаете радиус в 0). Это гораздо мощнее, чем вы могли бы представить. С этим знанием, вы можете создавать простые или сложные фигуры без какой-либо слишком запутанной математики