Сам себе девелопЕр. Ваяем аркаду. Часть нумеро финале

Xakep, номер #039, стр. 039-078-2


Взрывы и очки

Как ты уже успел заметить выше, при столкновении лазера и корабля противника игрок получает определенное количество очков за каждое попадание. Очки он, конечно, получает, но они никуда не выводятся. Поэтому стоит сделать элементарный счетчик. Для начала создай новый слой и назови его score. Используя панель инструментов, создай на новом слое меню с динамичным текстом (dynamic text). Перенеси новый объект в правый верхний угол экрана и, не убирая курсора в панели инструментов (Text Options), выбери из ниспадающего меню значение Dynamic Text, поставь галочку на Selectable, выбери в соседнем меню Single Line и набери в строке "Variable" - score. В подразделе Embed Fonts выбери числовое значение. Не покидая меню, выбери первый фрейм и Actions (CTRL+ALT+A). Используя расширенный режим, введи всего одну строчку.

score=0;

Теперь в начале новой игры счетчик будет обнуляться, что абсолютно правильно с точки зрения игрового дизайна.

Мощные взрывы

Анимация взрывов - процесс интересный, но самый нудный из всех. Для начала выбери корабль врага, щелкнув на модели. Затем правой кнопкой мыши выбери функцию Edit. Теперь, когда на экране ты видишь только корабль противника, можно приступить к созданию новых фреймов анимации. На данном этапе первый фрейм анимации должен быть полностью заполнен. Используя все тот же слой, создай (F6 или Insert> keyframe) четыре новых кадра (keyframes) анимации для реализации процесса взрыва вражеского корабля. При желании ты можешь увеличить это количество, но, на мой взгляд, четырех кадров будет достаточно. Для максимальной реалистичности процесса копируй предыдущий кадр поверх нового, чтобы анимация была пошаговой и в меру плавной. Затем выбери шестой кадр и вставь пустой кадр (blank keyframe) Insert> Blank keyframe или F7. Теперь там же создай новый слой и назови его control. Выбери первый кадр нового слоя и, используя Actions (CTRL+ALT+A), набери следующий код:

stop();

В том же слое сделай шестой кадр пустым (F7). Вновь выбрав шестой кадр все на том же слое control, используя Actions (CTRL+ALT+A), снова набери:

stop();

Итак, ты заставил корабль противника останавливаться на первом и шестом фреймах. Несмотря на парадоксальность этого действия, все очень просто. Первая остановка сделана для того, чтобы избежать неконтролируемого взрыва корабля до попадания в него лазера. Остановка в шестом фрейме необходима, так как после этого кадра у нас просто нет анимации. А мы не хотим, чтобы корабль взрывался сам по себе.

Учти, что если анимация взрыва корабля растянута на 10 кадров, то необходимость остановки потребуется на 12 кадре (первый, обычный кадр, также считается). Если с лазером мы разобрались, то остается возможность прямого столкновения между кораблем противника и твоим собственным кораблем. Давай внесем соответствующие изменения в программу. Для начала добавим новый код в корабль противника. Выбери вражеский корабль, используя Actions, и сразу после onClipEvent (enterFrame) перед левой скобкой добавь:

Назад на стр. 039-078-1  Содержание  Вперед на стр. 039-078-3