balloon.gotoAndPlay(2);
// Убираем шар из массива.
balloons.splice(j,1);
// Увеличиваем счет.
score += 1;
// Возвращаем значение true.
return(true);
}
}
// Если игрок не попал, возвращаем значение false.
return(false);
}
Для определения точного расстояния в пикселах между двумя клипами функция distanceиспользует математическую формулу. Прежде всего, она определяет значение разницы координат клипов по горизонтали и вертикали и сохраняет это значение в переменных dxи dy.Затем вычисляет квадратный корень суммы квадратов данных значений. Формула приведена ниже.
function distance(clip1, clip2) {
// Определяем расстояние между клипами.
dx = clip1._x – clip2._x;
dy = clip1._y – clip2._y;
return (Math.sqrt(dx*dx+dy*dy));
}
К сведению
Нажатие клавиши пробела контролируется кнопкой. В нашем примере она расположена за пределами рабочего поля, в левом верхнем углу экрана и визуально представляет собой надпись «button». Кнопке назначен следующий код:
on (keyPress «») {
_root.shootBullet();
}
В соответствии с кодом кнопка не реагирует на щелчок мышью. В любом случае это не имеет значения, так как кнопка расположена за пределами рабочего поля. Программа ждет нажатия клавиши пробела и отвечает на него вызовом функции shootBullet.
...
Совет
На первый взгляд не ясно, почему используется клавиша пробела, а не проверка Key.isDown, осуществляемая функцией moveFox.Функция Key.isDown проверяет, нажата ли клавиша во время определенного промежутка времени. В нашем примере нажатие осуществляется один раз в каждом кадре. Если игрок быстро нажмет на клавишу, это событие может произойти между проверками Key.isDown. Программа не увидит, что клавиша нажата, и выстрела не произойдет. Использование кнопки гарантирует, что нажатие клавиши будет замечено и обработано.
Скорость воспроизведения ролика составляет 30 кадров в секунду. Благодаря этому анимация воспроизводится более плавно. Изменив скорость воспроизведения ролика, вам, может быть, придется изменить скорость перемещения лисы, шаров и снарядов. В противном случае скорость игры может не соответствовать вашим ожиданиям.
Другие возможности
Существует несколько способов сделать нашу игру более интересной. Цвета могут быть не произвольными, а обозначать определенное количество очков. Например, красные шары могут стоить 100 очков, синие – 50 и т. д. От цвета, в свою очередь, может зависеть скорость и высота полета шара. При этом чем выше и быстрее летит шар, тем больше его ценность.
Вы можете вообще отказаться от использования шаров. В сущности, данная игра напоминает игры наподобие "Sea Wolf", задачей которых является поражение самолетов, или игры про космических пришельцев. Все, что требуется, – это заменить графику.
Исходный файл: Aimandshoot.fla
А что, если бы в предыдущей игре герой стоял, а не двигался из стороны в сторону? Тогда он бы мог направлять соломинку в любом направлении, а не только строго вверх. А снаряды подчинялись бы законам гравитации и, описав дугу, падали бы на землю.
Ролик Aimandshoot.fla представляет собой как раз такую игру. На рис. 10.4 показан фрагмент игры; как вы можете видеть, лиса находится в центре экрана и стреляет под углом. Рассмотрим, как это можно сделать.
Рисунок 10.4. Игра «Прицелься и выстрели» напоминает игру «Стрельба по шарам», однако в нее были добавлены новые возможности
Задача проекта
Наша задача – удалить из предыдущей игры один элемент и добавить два новых. Элементом, который необходимо удалить, является перемещение лисы вправо и влево. В данной игре клавиши со стрелками «влево» и «вправо» действовать не будут, а лиса будет оставаться в центре экрана.
Новые элементы – возможность прицеливаться и подчинение пули закону гравитации. При помощи мыши игрок может прицелиться, и соломинка повернется в нужном направлении. После выстрела пуля упадет на землю.
Подход
Для того чтобы соломинка была повернута в правильном направлении, прежде всего необходимо измерить горизонтальное и вертикальное расстояния между курсором и соломинкой, а затем с помощью этих значений вычислить необходимый угол.
Полученное значение можно использовать для поворота клипа соломинки в нужном направлении. Оно также определяет место вылета снаряда и количество пикселов по горизонтали и вертикали, на которое снаряд перемещается в каждом кадре.
Добавить влияние гравитации немного проще. В начале движения объекта-пули его траектория слабо изменяется под действием гравитации. Однако с каждым кадром скорость падения увеличивается. Пуля получила сильный импульс при запуске, поэтому она будет продолжать двигаться вверх, но все медленнее и медленнее, по мере уменьшения ее кинетической энергии. Затем пуля все быстрее и быстрее начнет падать вниз.
Читать дальше
Конец ознакомительного отрывка
Купить книгу