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

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

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

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

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

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

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

сверху от нижней стенки. Мы делаем это m тем же причинам, по каким мы
делали это для верхней стены - чтобы мяч не глядел так, будто он прошел
через стену. В строке 9 мы меняем знак скорости ча по у; это наша реакция
на столкновение.
Теперь давайте рассмотрим метод game.checkPaddleCollisions().
1 game.checkPaddleCollisions = function!) {
2 if (this.ball.tempx <this.leftPaddle.x+this.leftPaddle.width & &
this.ball.tempx+this.ball.radius >this.leftPaddle.x
& & this.ball.tempy+this.ball.radius >this.leftPaddle.у &&
this.ball.tempy <this.leftPaddle.y+this.leftPaddle.height) {
3 //left paddle collision detection
4 this.ball.tempx = this.leftPaddle.x +this.leftPaddle.width;
5 this.ball.xmov *= -1;
6 }
7 if (this.bal1.tempx •cthis.rightPaddle.x + this.rightPaddle.width
&& this.ball.tempx+this.ball.radius >this.rightPaddle.x
& & this.ball.tempy+this.ball.radius
>this.rightPaddle.у && this.ba11.tempy
this.rightPaddle.y+this.rightPaddle.height) {
8 //right paddle collision detection
9 this.ball.tempx = this.rightPaddle.x -this.ball.radius;
10 this.ball.xmov *= -1;
11 }
12 } ;
142 Часть 2. Исследование оснс
В этом коде ActionScript операторы if выглядят сложными, но подход здесь
то же, что вы уже использовали в главе "Обнаружение столкновений", когда
м( обсуждали обнаружение столкновения прямоугольника с прямоугольником.
K;i ждый из них представляет собой простую проверку на столкновение межл
двумя прямоугольниками - мячом и ракеткой. Мы видели, как реализуется ol
наружение столкновений в предыдущих главах. Здесь мы делаем проверку сл<
дующих условий:
• левая сторона мяча имеет меньшую координату х, чем правая сторон
ракетки;
• правая сторона мяча имеет большую координату х, чем левая сторон
ракетки;
• верхняя сторона мяча имеет меньшую координату у, чем нижняя стора
на ракетки;
• нижняя сторона мяча имеет большую координату у, чем верхняя сторс
на ракетки.
Если все четыре вышеперечисленных условия выполнены, то столкновение мел
мячом и ракеткой произошло. Эта проверка делается в точности одинаковым
ci собом в строках 2 и 7: один раз для левой ракетки и один раз для
правой ракетк Если условие в строке 2 выполнено, то мяч сталкивается с
ракетю и выполняются строки 4 и 5. Строка 5 размещает мяч таким образом,
что он лии слегка касается ракетки с правой стороны. Строка 5 меняет знак
скорости мяча i х. Аналогично если условие в строке 7 выполнено, то шар
размещается таким о! разом, что он лишь слегка касается ракетки справа, и
его скорость меняет знак.
Представьте себе, wo мы здесь не используем независимое от кадров o6i(
ружение столкновения. Это означает, что если вы возьмете эту свежеисг
ченную игру и попытаетесь превратить ее в полноценную игру, в которс мяч
движется быстрее, то вы можете столкнуться с типичными проблемам
обнаружения столкновения типа "моментальный снимок". Так, если мм<
движется достаточно быстро, он может пролететь прямо сквозь ракетку. В
можете, если пожелаете, использовать скрипты обнаружения столкновенг
между мячом и линией, разработанные в предыдущих главах для каждс' стенки
ракеток. Это дало бы вам независимый от кадров теннис.
Теперь давайте посмотрим на другой пример: мяч падает под действие
гравитации и отскакивает от пола. Откройте файл ball___floor.fla в пап*
Chapter06. В сцене вы видите экземпляры клипов ball_clip и floor_clip. К1
ActionScript в этом файле создает объект под названием ball для хранен*
0
!ва 6. Реакции на столкновение
143
информации о ball_clip, установки временного положения мяча, проверки
на столкновение с полом и рисования мяча на экране. Если скрипт
определяет столкновение между мячом и полом, то мяч устанавливается в
положение касания пола и его скорость меняет знак. Есть одна
дополнительная деталь, добавленная в этот процесс, которая еще не
рассматривалась, - decay (затухание). В этом примере переменная с именем
decay инициализируется значением 0.6. Ниже приводится код ActionScript
для функции обнаружения столкновения.
1 function ballFloorDetection() {
2 if (ball.tempy+ball.radius>floorY) {
3 ball.tempy = floorY-ball.radius ;
4 ball.ymov *= -l*decay;
5 \
6 }
I ели столкновение произошло, то скорость мяча меняет знак и умножается
ри переменную decay. Затухание (decay) является способом, чтобы обеспе-
шть уменьшение высоты отскока мяча с каждым последующим отскоком;
< по уменьшает значение скорости в процентах каждый раз, когда
происходит
• юлкновение. Все значения переменной decay находятся между 0 и I.
На-ример, в этом файле мы используем decay, равное 0.6 (устанавливается
I верхней части кадра, не показанного здесь). Это означает, что
каждый по-it юдующий отскок будет ограничен лишь 60 % скорости, с которой
произошло столкновение в первый раз.
Возможными значениями для decay являются все положительные числа 'нключая
нуль), но реальный диапазон находится между 0 и 1. Если decay установлено
в 0, то мяч просто шлепается на поверхность. Если decay установлено в
Предыдущая << 1 .. 41 42 43 44 45 46 < 47 > 48 49 50 51 52 53 .. 210 >> Следующая