Сам себе девелопЕр!

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  Содержание