English Version            Русская версия

 [ Разделы сервера ]  [ Карта сервера ]  [ Новости сервера ] [ Обратная связь ]



Это требует от нас обратного проецирования с линии действия на оси, с использованием угла theta. Ниже представлены выражения для новых векторных скоростей каждого шара. xvel1 = v1f*cos(theta)-yvel1prime*sin(theta) yvel1 = yvel1prime*cos(theta)+v1f*sin(theta) xvel2 = v2f*cos(theta)-yvel2prime*sin(theta) yvel2 = yvel2prime*cos(theta)+v2f*sin(theta) Ниже приводится краткий обзор того, что мы сделали: 1. Спроецировали векторные скорости x и y каждого шара на линию действия. Это необходимо потому, что в момент столкновения оказывают действие лишь векторные скорости (импульсы), которые направлены вдоль линии действия. 2. Применяем уравнения сохранения к этим проецированным векторным скоростям для нахождения новой векторной скорости после столкновения. 3. Используя новые скорости вдоль лини действия и векторных скоростей, перпендикулярных линии действия, спроецировать все назад на оси x и y Flash. Это даст новые значения конечной скорости после того, как произошло столкновение. Теперь давайте посмотрим это на ActionScript. Откройте файл billiard_ball.fla в папке Chapter06. Код ActionScript в этом файле по большей части идентичен тому, что содержится в файле circle_circle2.fla в Главе 5, «Обнаружение столкновения». Отличия кода ActionScript заключаются в следующем: 1. Мы добавляем к объектам ball переменную mass в процессе определения объекта в начале кода ActionScript. Для объекта ball1 мы устанавливаем mass в 1, выполнением оператора game.ball1.mass =1, а для объекта ball2 мы устанавливаем mass в 1 аналогичным оператором game.ball2.mass =1. 2. В функции ballToBallDetection() мы больше не выполняем оператор trace, когда столкновение обнаружено. Вместо этого, мы вызываем функцию с именем ball2BallReaction(). Когда она вызвана, мы передаем функции ball2BallReaction() следующую информацию: b1,b2,xl1,xl2,yl1,yl2,whatTime Если вы помните, b1 и b2 являются ссылками на объекты ball, xl1 и yl1 являются начальными координатами ball1, xl2 и yl2 являются начальными координатами ball2, а whatTime представляет число кадров, начиная с последнего кадра, который следует перед столкновением (это число между 0 и 1)
Hosted by uCoz