Иллюстрированный самоучитель по Flash-games


Создание кода - часть 3


if (bullets[fi].dist < .01) {

checkForHit(bullets[i].destx, bullets[i].desty);

_root[bullets[i].clip].removeMovieClip();

bullets.splice(i,1);

// Помещаем пулю ближе к цели.

} else {

bullets[i].x = bullets[i].dist*bullets[i].startx + (1.0-bullets[i] .dist)* bullets[i] .destx;

bullets[i].у = bullets[i].dist*bullets[i].starty + (l.0-bulletsfi].dist)* bullets[i].desty;

_root [bullets[i] .clip] ._x = bulletsfi] .x; _root[bullets[i].clip]._y = bullets[i].y;

}}}

Астероид создан так же, как и пуля. Однако координаты появления и исчезновения астероида выбираются случайно. Стартовая точка находится на расстоянии 25 пикселов по горизонтали и вертикали от центра экрана. Конечная точка отстоит от центра на расстоянии 550 пикселов по горизонтали и 400 по вертикали, что ровно в два раза больше размера рабочего поля. Это означает, что астероид появляется всегда в районе центра экрана, но может финишировать в любой точке вне видимой его области.

function createRock() {

// Задаем случайное положение для астероида,

startx = Math.random()*50+250;

starty = Math.random()*50+175;

// Задаем случайное направление движения,

destx = Math.random()*1100-275;

desty = Math.randomO*800-200;

// Добавляем астероид.

level + + ;

attachMovie("rock","rock"+level,level++);

rocks.push({startx: startx, starty: starty, destx: destx,desty: desty, dist: .01, clip: "rock"+level});

}

Подобно функции moveBullets функция moveRocks использует свойство dist каждого астероида, чтобы передвинуть его. Однако со временем он приближается к экрану и его начальное значение 0,01 в каждом кадре увеличивается на 10%. Помимо положения астероида его свойства _xscale и _yscale также зависят от dist, это делает возможным увеличивать астероид и создавать иллюзию его приближения к кораблю.
Если значение dist становится больше 1,0 и астероид все еще находится в видимой области экрана, считается, что астероид попал в корабль. Астероид взрывается, и значение переменной damage увеличивается. Если значение переменной damage больше или равно 20, то игра заканчивается.




Начало  Назад  Вперед