|

Сам себе девелопЕр!
Xakep, номер #038, стр. 038-070-4
Злобный враг
Для начала тебе потребуется создать модель противника. Лучше, если он будет в несколько раз меньше твоего основного корабля, так как концепция проекта предполагает большое количество врагов на одном экране. Не стоит углубляться в детализацию - враг должен быть мелким, пронырливым и молниеносным. Если твой объект разрушения готов - конвертни его в элемент (F8), в Instance (если еще не запомнил - CTRL+I) выставь значение "Movie Clip" и присвой ему имя enemy1. Предполагается, что противник будет лететь тебе навстречу, справа налево. Более того, противников должно быть как можно больше, а места появления - случайными. Задача достаточно сложная, но разрешимая. Для начала заставим наших врагов двигаться с разной скоростью. Для этого выбери enemy1 и, используя Actions (CTRL+ALT+A), введи следующий код:
onClipEvent (load) {
function reset(){
this._x=500;
this._y=random(200)+100;
enemySpeed=random(4)+1;
}
reset();
}
Код не только устанавливает границы движения корабля, но и устанавливает случайность его появления в пределах от 99 до 299 по оси координат Y. Строчка "enemySpeed=random(4)+1" рассчитывает случайную скорость корабля (в промежутке от 1 до 4).
Теперь заставим противника двигаться. Не закрывая окна, добавим еще один код:
onClipEvent (enterFrame) {
if (_root.sship.scrollStart){
this._x-=enemySpeed+_root.mainGround.groundSpeed;
} else {
this._x-=enemySpeed;
}
if (this._x<-10) {
reset();
}
}
Это заставит корабль противника двигаться до конца экрана, где он возвращается на место. Следующие строчки имеют отношение к движению фона. Суть их сводится к расчету скорости противника на основании скорости движения фона. Если скорость фона высока, то движение противника также повышается. В ином случае используется установка по умолчанию. О функции "Reset" я уже говорил. Перейдем к следующему этапу.
Размножение
Одного противника явно недостаточно. Поэтому займемся его размножением. Для начал создай новый слой и назови его control. Выбери первый фрейм в новом слое и используй Actions.
Введи следующий код:
numEnemy=5;
for (i=2; i<=numEnemy; i++){
enemy1.duplicateMovieClip( "enemy"+i, i+100 );
}
Строка "numEnemy=5" устанавливает максимальное количество противников на одном экране. Ты можешь уменьшить или увеличить это значение по своему желанию. Последующие строчки отвечают за цикличность анимации.
При значении i=2 создается два дубликата основного врага. Теперь добавь по одному фрейму анимации (F6) на каждый из слоев. В слое Control на втором фрейме используй Actions и добавь строчку:
stop();
Эта команда остановит все действия. В дальнейшем эта функция поможет нам при создании повреждений. Теперь сохрани свою работу и, используя горячую клавишу F12, проверь полученный результат. У тебя должен быть подвижный корабль, динамичный фон и пять противников, плывущих навстречу. На этом мы и остановимся. В следующем номере ты познакомишься с системой повреждений, научишься делать реалистичные эффекты движения и получишь вполне готовую аркадную игру с заставкой и удобным меню. До скорых встреч!
Назад на стр. 038-070-3 Содержание
|