Авторизация






Забыли пароль?
Сейчас на сайте находятся:
20 гостей

Вы не авторизованы.

Экспорт новостей

Спонсоры:

www.ants.ru - изготовление шкафов купе на заказ Москва.
Copyright © 2006-2008 Siliren.ru All rights reserved.
Права на статьи принадлежат их авторам. Копирование и использование материалов разрешается только в случае указания явной гиперссылки на веб-сайт siliren.ru, как на источник получения информации.
Руководство создания Flash игры. часть 1
Рейтинг: / 63
ХудшаяЛучшая 
20.02.2008 г.

Это первая часть большой статьи, которая расскажет обо всем процессе создания Flash игры, включая управление вводом, простую физику, обработку коллизий и многое другое. Это довольно длинное руководство, поэтому я решил разбить его на части. Все началось с дидактического пособия по созданию flash игры. Во первых, меня вдохновила Ball Revamped серия, но я добавил много новых возможностей, это более чем...

Давайте приступим к созданию главного действующего лица.

Герой.

Ок,я собираюсь сделать Болл, нашим героем. Итак, в данный момент наш герой будет красным кружком с желтым кружком внутри. Это выглядит хорошо. Думаю вам стоит распечатать и повесить его в спальне Улыбающийся.

Для начала, давайте подумаем о взаимодействии нас с героем. В принципе, я хочу, чтобы герой двигался по нажатию клавиш. Он будет двигаться влево, если я нажимаю левую клавишу, вправо, если правую и тд.
Итак, первый код героя будет:


onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
_x--;
}
if (Key.isDown(Key.RIGHT)) {
_x++;
if (Key.isDown(Key.UP)) {
_y--;
if (Key.isDown(Key.DOWN)) {
_y++;
}


Просто, не так ли? Обработчик события кадра просто проверяет, если клавиша нажата и инкрементирует или декрементирует x или y позицию в сообветствии с нажатой клавишей. Кликните на Flash и понажимайте стрелки для контроля над героем, нажмите Reset для сброса.

 

Энергия.

Отлично, вы заметили, что наш герой двигается с фиксированной скоростью? Я хочу установить переменною для хранения скорости, так чтобы если бы я захотел, чтобы герой двигался быстрее или медленнее мне надо было бы изменить всего одно значение. Это очень важно, так как я планирую разработать различные уровни, и скорость героя будет меняться в зависимости от уровня.
Мне надо создать переменную "power", для того, чтобы управлять скоростью перемещения героя.


onClipEvent (load) {
power = 3;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
_x -= power;
}
if (Key.isDown(Key.RIGHT)) {
_x += power;
}
if (Key.isDown(Key.UP)) {
_y -= power;
}
if (Key.isDown(Key.DOWN)) {
_y += power;
}
}


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

Скорость.

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

onClipEvent (load) {
power = 0.2;
yspeed = 0;
xspeed = 0;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power;
}
_y += yspeed;
_x += xspeed;
}


Заметьте я уменьшил power из предыдущего примера - было 3, теперь 0.2. Теперь power прибавляется к скорости, с этим надо играть осторожно, иначе наш герой будет двигаться слишком быстро. Начальные значения yspeed и xspeed инициализируются 0, но я могу изменять их, чтобы придать герою движения.
Теперь чем больше вы давите на клавишу, тем больше скорость вашего героя и тем труднее ему изменить направление.

Отлично.

 

Трение.

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

onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power;
}
xspeed *= friction;
yspeed *= friction;
_y += yspeed;
_x += xspeed;
}


Итак, я задействовал коэфициент трения меньше 1, чтобы воздействовать на скорость героя. Теперь, когда я нажму на клавишу, герой начнет движение, но когда я отпущу клавишу, герой постепенно остановится. Насколько медленно? Чем выше коэфициент трения (всегда меньше 1, запомните), тем медленней наш герой будет терять скорость.

Гравитация.

Я говорил, что я хочу сделать чтото похожее на Ball Revamped, поэтому мне нужна гравитация. Герой будет падать под воздействием силы тяжести.

onClipEvent (load) {
power = 0.3;
yspeed = 0;
xspeed = 0;
friction = 0.95;
gravity = 0.1
}

onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power;
}
xspeed *= friction;
yspeed += gravity;
_y += yspeed;
_x += xspeed;
}

 

Тяга.

Если есть сила тяжести, нужна и тяга. Я хочу более сложное перемещение вверх, так как герой живет в мире, где существует сила тяжести.

onClipEvent (load) {
power = 0.3;
yspeed = 0;
xspeed = 0;
friction = 0.95;
gravity = 0.1;
thrust = 0.75;
}

onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power*thrust;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power*thrust;
}
xspeed *= friction;
yspeed += gravity;
_y += yspeed;
_x += xspeed;
}


Как вы видите коэфициент тяги "thrust" (меньше чем 1), воздействует на движение вверх, ослабляя его и делая более сложным.

Ветер.

Ну и что теперь? Конечно ветер! Я хочу чтобы эта сцена выглядела ветренной, жизнь героев сложна, так то.

onClipEvent (load) {
power = 0.3;
yspeed = 0;
xspeed = 0;
friction = 0.95;
gravity = 0.1;
thrust = 0.75;
wind = 0.09;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power*thrust;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power*thrust;
}
xspeed += wind;
xspeed *= friction;
yspeed += gravity;
_y += yspeed;
_x += xspeed;
}


Ветер влияет на сторону движения, положительно влияет на движение вправо и отрицательно влево. Поиграйте со всеми переменными и найдите идеальное сочетание реализма и играбельности.

Поворот.

Теперь последнее прикосновение. Так же как в Ball Revamped, я хочу чтобы герой вращался по часовой стрелке при движении вправо, а против часовой при движении влево

onClipEvent (load) {
power = 0.65;
yspeed = 0;
xspeed = 0;
friction = 0.99;
gravity = 0.1;
thrust = 0.75;
wind = 0.05;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power*thrust;
}
if (Key.isDown(Key.DOWN)) {
yspeed += power*thrust;
}
xspeed += wind;
xspeed *= friction;
yspeed += gravity;
_y += yspeed;
_x += xspeed;
_rotation += xspeed;
}

Это просто я просто приравнял rotation героя его xspeed.


Вот исходники .

Обсудить новость в форуме. (2 сообщений)

Поиск похожих: руководство Flash игра разработка герой движение
 
След. »
счетчик тИЦ и PR