С этими уравнениями координат, мы можем написать уравнение, которое определяет расстояние между двумя окружностями. Мы остаемся с уравнениями для расстояния между двумя окружностями, которые зависят от одной переменной – времени (ладно, хорошо, для нас это, в действительности, кадры). Если бы мы захотели, мы могли бы зафиксировать любой момент времени в этом уравнении и найти расстояние, на котором окружности находились бы друг от друга в этот момент. Аналогично, мы могли бы фиксировать расстояние и затем решить уравнение для нахождения времени, когда две окружности будут находиться на этом расстоянии. Сейчас нас интересует последний случай. То же основное условие должно быть удовлетворено для столкновения двух окружностей: расстояние между двумя окружностями должно быть меньше или равно сумме их радиусов. Поэтому мы делаем следующее:
1. Записываем уравнения для координат x и y обеих окружностей. Эти уравнения основаны на скоростях x и y.
2. Используем уравнения для координат x и y для обеих окружностей для записи уравнения расстояния между двумя окружностями.
3. В уравнении расстояния, используем сумму их радиуса для расстояния, и решаем по времени (которое выражается в кадрах).
4. Делаем это в каждом кадре. Если время меньше или равно 1, то столкновение произошло между последним кадром и текущим кадром.
Давайте посмотрим на это в математической форме, прежде чем перейти к ActionScript.
1. Для окружности 1:
x1 =xl1+xmov1*t
y1 =yl1+ymov1*t
Для окружности 2:
x2 =xl2+xmov2*t
y2 =yl2+ymov2*t
Переменные xl1 , yl1 , xl2 , и yl2 представляют координаты окружности в конце предыдущего кадра (поскольку мы еще не обновили этот кадр). Переменная l стоит в «конце», как в «последнем кадре». Переменная t представляет время от начала до конца предыдущего кадра.
2. Расстояние между двумя окружностями:
distance = ?(x2-x1) 2 +(y2-y1)2
3. Установить расстояние как сумму радиусов, и решить по времени:
distance =radius1+radius2 =?(x2-x1) 2 +(y2-y1) 2
Решение уравнения по времени очень трудно