Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 130 131 132 133 134 135 < 136 > 137 138 139 140 141 142 .. 210 >> Следующая

стриЯ
10 мы выполняем platformDetect(), которая проверяет столкновения между
герЯ ем и платформами. Затем мы проверяем столкновения между героем и
собириЯ мыми предметами, выполняя co!lectableDetect() в строке 11. В
строке 12 мы нрЯ веряем, достиг ли герой флага, а в строке 13 мы
проверяем, упал ли герой доаЛ точно, чтобы встать на поверхность.
listen ForKeys()
Эта функция вызывается в каждом кадре событием onEnterFrame. Она проверЯ
ет, нажаты ли клавиши направления или пробел. Если любая из этих контр"
(Я рующих героя кнопок нажата, то текущее состояние героя может измени i
i " (например, ходьба изменяется на прыжок). Если вы думаете об этом с
програ^И мистской точки зрения, вы можете увидеть, что управление героем
и придапЯ ему максимально реалистичного вида может немного сбить с толку
Ниже прв ведены некоторые правила поведения в Ледяном мире.
• Герой может подпрыгивать, только если он в данный момент находи (Я
на поверхности или на платформе. (В некоторых играх герой может поди|Я
гивать в воздухе.)
• Герой может подпрыгивать во время наклона, но не может идти, когда
на к Я няется.
• В воздухе (в наклоне или нет) герой может управляться кнопками плсЯ
или вправо.
Глава 15. Ледяной мир: игра для приставки
407
• Управляемость героя менее восприимчива, пока он находится в
воздухе. Это означает, что, если герой прыгает, игрок может управлять
положением героя, но не так легко, как если бы герой находился на
поверхности.
Когда вы смотрите на форматированный список правил, который представлен
пыше, кодирование функциональности не кажется слишком сложным делом.
Однако есть несколько моментов, которые могут быть сложны для управления.
11 ап р и мер, когда вы нажимаете клавишу со стрелкой вниз, герой
должен наклониться. Но что если герой бежал, затем наклонился и скользил
под платформой и затем вы отпускаете кнопку со стрелкой вниз? Герой при
этом встал бы, если бы вы (как программист) не предвидели эту ситуацию.
Что происходит в такой ситуации (в этой игре и в других похожих играх) -
это то, что герой остается склонившимся, но медленно продвигается (кодом)
к одной или к другой стороне платформы. Когда герой достигнет края, он
автоматически разогнется.. Вы узнаете об этом больше при рассмотрении
функции platformDetect().
Ниже приведена функция listenForKeys():
1 function listenForKeys() (
2 hero.wasCrouching = hero.isCrouching;
3 if (hero.inAir) (
4 hero.walklncrement = hero.airWalklncrement;
5 ( e1se {
6 hero.walklncrement = hero.groundWalklncrement;
7 }
8 if (Key.isDown(Key.RIGHT) && (!hero.isCrouching ||
(hero.isCrouching && hero.inAir))) {
9 hero.xmov += hero.walklncrement;
10 hero.walkRight();
11 } else if (Key.isDown(Key.LEFT) && (!hero.isCrouching
II (hero.isCrouching && hero.inAir))) {
12 hero.xmov -= hero walklncrement;
13 hero.walkLeft () ;
14 }
15 if ((Key.isDown(Key.SPACE) || Key.isDown(Keу.UP)) &&
okToJump) {
16 okToJump = false;
17 if (!hero.is Jumping && !hero.inAir) (
18 hero.inAir = true;
19 hero.ymov -= hero.jumpSpeed;
2 0 hero.jump () ;
408
Часть 2 Исследование основ
21
22
) else if (!Key.isDown(Key.SPACE) && Key.isDown(Key UP)) { oKToJump =
true;
23
24
25
26 27
if (Key.isDown(Key.DOWN)) (
hero.crouch(t;
) else {
hero.unCrouch ();
28
29
30
Первое, что мы делаем (строка 2), - это сохранение текущего состояния
наклон героя. Мы делаем это, чтобы помочь с ситуацией, описанной выше
(скольжеп ем под платформой и затем попыткой встать). В функции
platformDetect() м будем использовать это сохраненное состояние наклона,
hero.wasCrouching, определения того, должен ли быть герой вытолкнут.
Далее, в строках 3-7, мы изменяем свойство hero.walklncrement в зависи
сти от того, находится ли герой на поверхности, на платформе или в возду
Значение hero.walklncrement определяет чувствительность персонажа (т. е.
а ускорение).
В строках 8 и 11 мы проверяем похожие условия. Если клавиша с правой стр
кой нажата и герой не наклоняется, мы перемещаем героя вправо. Если npai
стрелка нажата и герой наклоняется и находится в воздухе, мы также
перемещ; , героя вправо. Если случается любая другая ситуация, мы не
перемещаем rcpi вправо. В строке 11 мы делаем такую же проверку, но с
левой стрелкой.
Строки 15-24 управляют прыжком героя. В строке 15 мы проверяем, нам ты ли
пробел или стрелка вверх (обе клавиши управляют прыжком) и равной
значение okToJump значению true. Переменная okToJump установлена в tr
когда ни пробел, ни стрелка вверх в данный момент не нажаты. Это сдел.м
для того, чтобы вы не могли просто утопить пробел или стрелку вверх и
герс бы прыгал автоматически при касании с землей - вы отпускаете клавиш
управляющую прыжком, и нажимаете ее снова, чтобы герой прыгнул опя i
Обратите внимание, что, когда условия для выполнения прыжка наступи (т.
е. условие в строке 15 полностью выполнено), значение hero.inAir устапо
лено в true. Мы сохраняем этот признак, когда герой находится в воздухе и
Предыдущая << 1 .. 130 131 132 133 134 135 < 136 > 137 138 139 140 141 142 .. 210 >> Следующая