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

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



Давайте назовем векторную скорость мяча по x как vxi (v для «velocity», x для «x direction», i для «initial»), а скорость мяча по y как vyi. Проекции vxi и vyi на линию действия будут vyip (p соответствует «prime»): vyip =vyi *cos(alpha)-vxi *sin(alpha) Проекция vxi и vyi на саму линию равна vxip. vxip =vxi *cos(alpha)+vyi *sin(alpha) Теперь, когда шаг 1 выполнен, мы перемещаемся на шаг 2 и меняем знак vyip (помните, что f соответствует «final»). vyfp =-vyip vxfp =vxip Обратите внимание, что конечная векторная скорость вдоль линии (vxfp) неизменна. Теперь мы перемещаемся на шаг 3 для проецирования vyfp и vxfp обратно на оси x и y для получения конечных векторных скоростей, vxf и vyf. vxf =vxfp *cos(alpha)-vyfp *sin(alpha) vyf =vyfp *cos(alpha)+vxfp *sin(alpha) Эти два значения, vxf и vyf, являются векторными скоростями мяча по x и y в момент после столкновения. Использовать этот кода ActionScript не трудно. Давайте посмотрим на пример. Откройте файл ball_line.fla в папке Chapter06. Код ActionScript в этом файле очень похож на то, что вы видели в файле ball_line.fla из Главы 5, «Обнаружение столкновений». Основное отличие кода ActionScript в этом файле заключено в функции ballLineReaction(). Эта функция приведена ниже: 1 function ballLineReaction(tempLine,point,x,y){ 2 var lineDecay =tempLine.lineDecay; 3 var alpha =tempLine.angle; 4 var cosAlpha =math.cos(alpha); 5 var sinAlpha =math.sin(alpha); 6 //получить векторные скорости шара по x и y 7 var vyi =point.ymov; 8 var vxi =point.xmov; 9 //спроецировать векторные скорости по x и y на линию действия 10 var vyip =vyi*cosAlpha-vxi*sinAlpha; 11 //спроецировать векторные скорости по x and y на линию 12 var vxip =vxi*cosAlpha+vyi*sinAlpha; 13 //перевернуть векторную скорость вдоль линии действия 14 var vyfp =-vyip*lineDecay; 15 var vxfp =vxip; 16 //перевести назад на оси x и y во Flash 17 var vyf =vyfp*cosAlpha+vxfp*sinAlpha; 18 var vxf =vxfp*cosAlpha-vyfp*sinAlpha; 19 //установить векторные скорости шара на основе полученных результатов 20 point
Hosted by uCoz