Одним из таких типов является столкновение линии с линией; когда две линии пересекаются, они в большинстве случаев не двигаются, что означает, что нам не нужно использовать для них независимое от кадров обнаружение столкновений. Но для некоторых ситуаций, таких как столкновения, окружность-линия или окружность-окружность, независимое от кадров обнаружение столкновений является необходимым для быстрых игр, вроде бильярда или пинбола.
Обнаружение столкновения точки с окружностью
Мы начнем демонстрацию математического обнаружения столкновения с одного из простейших типов. Хорош пример, где мы можем использовать обнаружение столкновения точки с окружностью, это игра дарц (стрелки). Наконечником дарца является точка, а мишень состоит из набора концентрических окружностей.
Так как же мы определяем, совпала ли точка с окружностью? Представьте, что у вас два клипа: окружность и точка. Предположим, точка привязки клипа с окружностью является действительным центром окружности. Поскольку точка и окружность являются клипами, вы можете легко определить позиции обоих. Также, используя уравнение расстояния, выведенное в Главе 3, «Тригонометрия 101» (и перечисленные ниже в ActionScript), мы знаем, что мы можем найти расстояние между точкой и окружностью. С этой информацией мы можем записать одно условие, которое определяет, имело ли место столкновение:
Если расстояние между точкой и центром окружности меньше, чем радиус окружности, то точка попала в окружность.
POINT1
ТОЧКА1
Radius
Радиус
POINT2
ТОЧКА2
Point1:
Distance from center<radius;
therefore they are colliding
Точка1:
Расстояние от центра<радиус
следовательно они пересекаются
Point1:
Distance from center>radius;
therefore they are not colliding
Точка2:
Расстояние от центра>радиус
следовательно они не пересекаются
Обратите внимание, что радиус окружности составляет половину ее ширины.
Чтобы посмотреть наглядно все выше описанное, откройте файл point_circle