_y =y;
6 if ((x>=line_a.x1 &&x<=line_a.x2)
.||(x<=line_a.x1 &&x>=line_a.x2)
.||(y>=line_a.y1 &&y<=line_a.y2)
.||(y<=line_a.y1 &&y>=line_a.y2)){
7 var segment_a =true;
8 }
9 if ((x>=line_b.x1 &&x<=line_b.x2)
.||(x<=line_b.x1 &&x>=line_b.x2)
.||(y>=line_b.y1 &&y<=line_b.y2)
.||(y<=line_b.y1 &&y>=line_b.y2)){
10 var segment_b =true;
11 }
12 if (segment_a &&segment_b){
13 trace("The lines are intersecting!!");
14 }
15 }
Первые пять строк этой функции идентичны функции findIntersection() в предыдущем примере. В остальной части функции находится блок условия, который проверяет, находится ли точка пересечения в границах отрезков. Строки 6-8 проверяют, находится ли точка между границами x или между границами y линии line_a. Если да, то точка остается на отрезке. Строки 9-11 делают то же самое, что и 6-8, но для линии line_b. Если точка остается в пределах границ обеих отрезков, то выполняется оператор trace, давая вам знать, что пересечение произошло.
Вы могли бы ожидать увидеть раздел обнаружения столкновения точки с линией раньше раздела обнаружения столкновения окружности с линией. Я не включал эту методику по двум причинам. Во-первых, по моему опыту, обнаружение столкновения точки с линией не очень полезно. Во-вторых, если вы не делает независимое от кадров обнаружение столкновений, почти невозможно обнаружить какое-либо столкновение точки с линией.
Если вы действительно интересуетесь столкновениями точки с линией, обратите особое внимание на последние скрипты, представленные в следующем разделе. Используя их, вы сможете установить радиус окружности в 0 и, таким образом обнаружить столкновения точки с линией (окружность радиусом 0 представляет собой точку).
Обнаружение столкновения окружность-линия
В этом разделе мы обсудим независимое от кадров обнаружение столкновения окружности с линией