Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 42 43 44 45 46 47 < 48 > 49 50 51 52 53 54 .. 210 >> Следующая

1, то мяч всегда будет отскакивать на ту же высоту. Если
decay ус-
аповлено в значение, большее 1, то мяч будет отскакивать выше с
каждым
последующим ударом (что более не является затуханием). Когда вы создади-с
SWF из этого файла, вы увидите, что мяч будет отскакивать несколько раз,
затем остановится. Это соответствует поведению в обычном, старом бас-(•
>тболе. Цель этой главы состоит в том, чтобы показать, как
программировать реалистичные реакции. Добавление фактора затухания
является одним
14 простых способов добавления реализма в ваши реакции на столкновения
i полом или стеной.
144
Часть 2. Исследование осна --------------'----------я
Реакции "окружность - линия"
Реакции типа "окружность - линия", или "мяч - линия", происходят, когда
мя сталкивается с линиями под некоторым углом (как, например, в пинболе).
С шествует три шага для поиска равнодействующей векторных скоростей х и
мяча после столкновения с линией:
1. Проецирование векторных скоростей х и у на линию действия (наприме)
линию или доску, если вы по-прежнему думаете о пинболе).
2. Смена знака векторной скорости, что направлена вдоль линии
действия. Эг делается затем, что только часть векторной скорости
изменяется в столкнов* иии, и это та часть, которая направлена вдоль
линии действия. Векторна! скорость, которая направлена вдоль "реальной"
линии (той, по которой мя сталкивается), не затронута столкновением.
3. Проецирование векторных скоростей, которые направлены вдоль лини и
линии действия назад на оси х и у. Это дает нам конечный результат, кото
рый мы ищем: векторные скорости по х и у после столкновения.
О Когда два объекта сталкиваются, импульс, на который воздействукл
является компонентом, расположенным вдоль линии действия - вообр) жаемой
линии движения

мяч
,Xmpv
Ymov
J)
Проецирование xmov и ymov на линию действия и саму линию
|чва 6. Реакции на столкновение
145
перь, когда вы получили краткий обзор, как найти эти векторные скорости,
и сделаем прыжок и пройдем все шаг за шагом. Давайте назовем векторную
орость мяча по х как vxi (v для velocity, х для х direction, i для
initial), а ско-сть мяча по у как vyi. Проекции vxi и vyi на линию
действия будут vyip (р со-ветствует prime):
\7 у i р =vyi *cos ( alpha )-vxi *sin(alpha)
1роекция vxi и vyi на саму линию равна vxip.
vxip =vxi *cos(alpha)+vyi *sin(alpha)
сперь, когда шаг 1 выполнен, мы перемещаемся на шаг 2 и меняем знак vyip
помните, что f соответствует final).
vyfp =-vyip vxfp =vxip
"ратите внимание, что конечная векторная скорость вдоль линии (vxfp)
неиз-снна. Теперь мы перемещаемся на шаг 3 для проецирования vyfp и vxfp
обрат-к> на оси х и у для получения конечных векторных скоростей vxf и
vyf.
vxf =vxfp *cos(alpha)-vyfp *sin(alpha) vyf =vyfp *cos(alpha)+vxfp
*sin(alpha)
Эти два значения, vxf и vyf, являются векторными скоростями мяча по х и у
в момент после столкновения. Использовать этот код ActionScript не
трудно. Давайте посмотрим пример. Откройте файл ball line.fla в папке
146
Часть 2. Исследование oi
Chapter06. Код ActionScript в этом файле очень похож на то, что вы дели в
файле ballline.fla из гл. 5, "Обнаружение столкновений". Оснс
ное отличие кода ActionScript в этом файле заключено в функи
ballLineReactionQ. Эта функция приведена ниже.
1 function ba1ILineReaction (tempLine, point, x, у) {
2 var lineDecay = tempLine.lineDecay;
3 var alpha = tempLine.angle;
4 var cosAlpha = math.cos(alpha);
5 var sinAlpha = math.sin(alpha);
6 // get the x and у velocities of the ball
7 var vyi = point.ymov;
8 var vxi = point.xmov;
9 //project the x and у velocities onto the line of acti(
10 var vyip = vyi*cosAlpha-vxi*sinAlpha;
11 //project the x and у velocities onto the line
12 var vxip = vxi*cosAlpha+vyi*sinAlpha;
13 //reverse the velocity along the line of action
14 var vyfp = -vyip*1ineDecay;
15 var vxfp = vxip;
16 //translate back to Flash's x and у axes
17 var vyf = vyfp*cosAlpha+vxfp*sinAlpha;
18 var vxf = vxfp*cosAlpha-vyfp*sinAlpha;
19 //set the velocities of the ball based from the
20 point.xmov = vxf;
21 point.ymov = vyf;
22 point.tempx = point.x+point.xmov;
23 point.tempy = point.y+point.ymov;
24 }
Эта функция вызывается из функции getFrames(), когда обнаруживается стоЖ
новение. Обращение к объекту line передается через параметр tempLine, а
обр*
щение к объекту, представляющему мяч, передается через параметр
point. КооА
динаты л и у мяча в точке контакта также передаются в эту функцию.
Строка" устанавливает переменную с именем lineDecay. Это значение между 0
и I, кот" рое уменьшает векторную скорость при отскоке. (Концепция
затухания быв разъяснена в этой главе ранее.) Если затухание имеет
значение, равное 1, то эф не затухание. Далее мы устанавливаем переменные
для хранения косинуса и си нуса угла линии (строки 4 и 5). Мы сохраняем
эти значения потому, что в на возникает необходимость более одного раз в
процессе выполнения этого ко(r) ActionScript, и, как мы уже видели, во
Предыдущая << 1 .. 42 43 44 45 46 47 < 48 > 49 50 51 52 53 54 .. 210 >> Следующая