Blender GameKit 2/Tube Cleaner

Материал из Blender3D.

Перейти к: навигация, поиск

Содержание

Трубочист

Автор:
Перевод: Азовцев Юрий

«Трубочист» — простая игра в жанре «стрелялка».

«Трубочист» (Tube Cleaner) был создан Фредом Лачновиксом (Freid Lachnowicz). Игра представляет собой простую стрелялку, действие которой происходит внутри трубы. Здесь есть три вида противников. Во время движения по трубе постарайтесь набрать максимальное количество очков и собрать настолько много патронов, насколько сможете!

Чтобы попробовать игру в завершенном варианте, загрузите сцену Games/TubeCleaner.blend с DVD к этой книге. Сцена включает в себя инструкции по управлению персонажем.

Эта глава не ставит целью объяснить, как сделать всю игру. Но по завершению ее освоения, вы поймете, как делаются расширения к игре (также вы сможете найти cheat-коды...). А также, я всячески хочу вдохновить вас на изменение и расширение уже имеющейся игры по вашему вкусу!

Иллюстраций x-y. Игра «Трубочист»
Увеличить
Иллюстраций x-y. Игра «Трубочист»

Управление в игре «Трубочист»

Клавиша Действие
Клавиши со стрелками Вращение пушки влево, вправо, вверх и вниз
Пробел Выстрел

Загрузка моделей

Запустите Blender и загрузите сцену Tutorials/TubeCleaner/TubeCleaner_00.blend с DVD диска. Эта сцена содержит все модели для начала создания игры. Для создания интерактивности в сцене мы пройдем по следующим шагам:

  1. Добавим логику для пушки, которая позволит ей подниматься вверх, вращаться и совершать выстрелы.
  2. Добавим логику для врагов.
  3. Создадим систему очков с отображением текущего результата.
Иллюстрация a-b. Сцена игры «Трубочист» в виде сверху в режиме отображения объектов сеткой (wireframe)
Увеличить
Иллюстрация a-b. Сцена игры «Трубочист» в виде сверху в режиме отображения объектов сеткой (wireframe)

Сцена содержит вид из камеры слева, окно с сетчатым режимом отображения (вид сверху) справа и окно Логических Блоков снизу. В виде сверху (Иллюстрация a-b) вы можете заметить, что объект «База» уже выделен (отображается розовым цветом по контуру). Этот объект будет размещать на себе пушку и будет иметь несколько блоков логики. Сама же пушка является дочерним объектом по отношению к объекту «База». Эта иерархия в дальнейшем значительно облегчит нашу работу. Нам не нужно будет синхронизировать движения двух отдельных объектов.

Инструменты управления движением базы и пушки

Мы начнем с создания элементов управления вращением вокруг вертикальной оси базы. Вращение базы приведет к вращению и пушки, и камеры, т.к. они связаны с базой связью родитель-потомок.

Иллюстрация [TC-1]. Логические блоки для вращения пушки
Увеличить
Иллюстрация [TC-1]. Логические блоки для вращения пушки

Убедитесь, что объект «База» выделен (имеет розовый контур, щелкните ПКМ если не выделен) и щелкните кнопки «Add» в каждом из столбцов в разделе логики в окне Кнопок. Создайте по новому логическому блоку в столбцах Сенсоры, Контроллеры и Актуаторы.

Теперь свяжите Логические Блоки, щелкая и рисуя линию от желтого шарика (выхода) одного блока к желтой впадине (входу) другого. По этим связям будет передаваться информация от одного логического блока к другому. Измените тип первого логического блока на «KeyBoard Sensor». Для этого щелкните и удерживайте нажатой ЛКМ на Кнопке Меню и выберите в нем пункт «Keyboard».

image:GK2_note.png Если вы сталкиваетесь с какими-то сложностями при создании связей между логическими блоками или при изменении типов логических блоков, пожалуйста, обратитесь еще раз к главе «Побег Тыквы», где эта тема описана более подробно.

Теперь щелкните ЛКМ в поле «Key» и после появления надписи «Press any key» нажмите клавишу «Стрелка-Вправо». Теперь в поле «Key» должна быть надпись «Rightarrow» и Сенсор Keyboard будет реагировать на нажатие только этой кнопки.

Теперь в логическом блоке Актуатора измените значение третьего поля (ось Z) в строке «dRot» и задайте ему значение -0.03. Точное задание значения с клавиатуры доступно при щелчке ЛКМ по центру поля. Три поля всегда интерпретируются как три оси (X,Y,Z) текущего объекта. В нашем случае, по нажатию клавиши Стрелка Вправо мы будем вращаться вокруг оси Z.

Сейчас переместите курсор мыши в окно с видом из камеры и нажмите клавишу «P» для запуска игры. Если все было настроено верно, то вы сможете поворачивать пушку вправо по нажатию соответствующей клавиши.

image:GK2_note.png Вам всегда следует давать понятные имена логическим блокам и вновь созданным элементам сцены (для этого щелкните ЛКМ по имени элемента по умолчанию и введите с клавиатуры новое имя). Это позволит в будущем проще найти нужный элемент и вспомнить логику построения сцены.

Используйте иллюстрацию [TC-1] как основу для настройки системы логики.

Используйте ту же последовательность действий для создания Логических Блоков, управляющих поворотом пушки влево. Для этого в блоке Сенсор используйте управляющую клавишу Стрелка Влево, а в блоке Актуатора поворота введите значение «0.3» в третье поле параметра «dLoc».

Как вы можете видеть, в разделе логики хватает места всего лишь для 6 логических блоков. Используйте маленькую оранжевую стрелку в левом верхнем углу каждого логического блока для «свертывания» содержимого этого блока. После нажатия на стрелку блок занимает гораздо меньше места, но в таком случае важное значение принимают осмысленные имена блоков. В свернутом состоянии вы не видите настроек самого блока и можете судить о его предназначении лишь по его имени.

Движение вверх

В "Трубочисте" мы хотим иметь постоянное движение базы вверх по трубе. Мы могли бы сделать это так же, как и в случае с поворотом пушки, но есть другой способ, который позволит более точно управлять перемещением, и мы получим возможность "спускаться" на спец-уровни в трубе.

Метод, которым мы воспользуемся - это комбинация возможностей Игрового Движка Blender и мощной системы анимации. Переместите курсор мыши в окно вида из камеры и нажмите "Alt-A". Blender начнет проигрывать анимации, уже созданные в сцене. Нажмите клавишу "ESC", чтобы остановить проигрывание анимации. Но ни одна из этих анимаций не проигрывается игровым движком. Мы должны "сказать" объекту проигрывать анимацию. Таким способом мы можем интерактивно контролировать анимации, запускать их, останавливать или переводить в режим паузы.

Переместите курсор мыши в окно с отображением объектов в виде сетки и нажмите сочетание клавиш "Shift-F6". Тип окна изменится на "IPO Windows" (см Иллюстрацию (tc-ipo)). Здесь вы можете редактировать анимации с помощью кривых. Окно IPO-кривых организованно с помощью осей. Здесь есть горизонтальная ось, которая отображает кадры анимации, и вертикальная ось, на которой отмеченный Blender-юниты. Желтая вертикальная линия - кривая анимации движения объекта "База" вдоль оси Z, интерпретирующая в нашем случае движение объекта вверх. Теперь, для перемещения объекта на 10 юнитов вверх вам достаточно переместить IPO-курсор (зеленый отрезок) щелчком ЛКМ в области 10 кадра. Вы сразу заметите изменение в окне с видом из камеры.

Иллюстрация (tc-ipo). Окно IPO-кривых с кривыми анимации движения "базы" вверх
Увеличить
Иллюстрация (tc-ipo). Окно IPO-кривых с кривыми анимации движения "базы" вверх

Для проигрывания этой анимации в Игровом Движке мы воспользуемся специальным типом Актуатора - "IPO Actuator", установив в настройках Актуатора тип проигрывания "Property". Property - это переменная объекта, которая может хранить значение, либо строку текста. Сейчас мы создадим новую переменную свойств объекта, в которой будет храниться значение высоты объекта (zLoc) нашей базы. Для этого щелкните кнопку "Add Property" в разделе Logic в Окне Кнопок при выделенном объекте "База".

Щелкните в поле "Name:" и измените имя "prop", присвоенное автоматически, на "zLoc". Этот параметр будет хранить высоту пушки в трубе.

image:GK2_important.png В Blender имена с большими и строчными буквами различаются. Имя объекта "zloc" и имя параметра "zLoc" будут различными.
Иллюстрация (tc-lbup). Логические блоки для движения вверх
Увеличить
Иллюстрация (tc-lbup). Логические блоки для движения вверх

Продолжайте создавать блоки по аналогии с иллюстрацией (tc-lbup). Сенсор "Always" активирует связанные с ним логические блоки каждый кадр анимации игрового движка, обеспечивая постоянное движение. Контроллер "AND" передает "импульсы" от Сенсора сразу двум Актуаторам, связанным с ним, и оба Актуатора срабатывают в один момент времени.

IPO-Актуатор будет проигрывать IPO-анимцию в соответствии со значением параметра "zLoc". Для создания равномерного движения мы будем увеличивать значение параметра "zLoc" каждый кадр с помощью Актуатора Property. В данном случае, он будет иметь тип "Add", который добавляет значение в поле "Value:" (для начала 0.01) к параметру "zLoc" каждый кадр. Попробуйте изменить значение "Value:", чтобы почувствовать, как изменится скорость анимации. Если вы захотите, чтобы ваша пушка перемещалась вниз - введите в поле "Value:" отрицательное значение -0.01. После экспериментов, верните значение поля "Value:" к 0.01, как показано на иллюстрации (tc-lbup). Чтобы запустить и проверить работу игры на этом этапе, переместите курсор мыши в окно с видом из камеры и нажмите клавишу "P".

image:GK2_note.png Blender может отображать значение переменных во время игры. Для этого в меню "Game" выберите пункт "Show debug properties" и нажмите кнопку "D" (Debug) рядом с каждым из интересующих вас параметров.

Выстрелы

Переключите окно IPO-кривых обратно в 3D вид, нажав SHIFT-F5. Проконтролируйте, чтобы при этом курсор мыши находился в переключаемом окне. Теперь щелчком ПКМ выделите пушку (объект "Gun"). Для выделения вы можете щелкнуть по любой части сетки, образующей объект. Имя выделенного объекта будет отображаться в левом нижнем углу окна 3D-вида и в Окне Кнопок. В разделе Логики имя выделенного объекта появится в заголовках колонок для Логических Блоков.

Теперь создайте Сенсор, Контроллер и Актуатор для Пушки (объекта "Gun") и свяжите их между собой, как вы делали это ранее. Измените тип Сенсора на "Keyboard" (дайте сенсору имя "Space") и выберите клавишу "Пробел" (щелчком в поле "Key") в качестве клавиши выстрела для пушки. Тип Актуатора измените на "Edit Object". По умолчанию этот тип актуатора производит действие "Add Object" создавая новый объект каждый раз при срабатывании Актуатора.

Иллюстрация tc-fire. Логические Блоки для выстрела пушки
Увеличить
Иллюстрация tc-fire. Логические Блоки для выстрела пушки

Щелкните ЛКМ в поле "OB:" и введите с клавиатуры имя объекта "bullet". Это создаст объекта "bullet", созданный заранее и находящийся на скрытом слое в сцене. Введите во втором поле "linV" 18.00 - это придаст пуле начальную скорость. Также активируйте (нажмите) маленькую кнопку с буквой "L", расположенную позади строки "linV". В этом случае пуля будет покидать ствол пушки в направлении ее прицела. Введите 50 в поле "Time:" - это ограничит время жизни пули 50 кадрами, предотвращая бесконечный рикошет и отскоки пули. Как обычно, попробуйте запустить игру и сделать несколько выстрелов.

В данный момент у нас неограниченный лимит боеприпасов. Чтобы это "исправить", мы опять же воспользуемся параметром Property, содержащим количество оставшихся пуль. Добавьте новый параметр, щелкнув по кнопке "ADD property". Назовите этот параметр "bullets" и измените его тип на "Int", нажав на кнопку с выпадающим меню, на которой сейчас написано "Float" (стандартный тип для новых параметров). Параметр "Int(eger)" хранит в качестве значения только целые числа, это идеально для нашей задачи, ведь мы не хотим иметь в обойме половину пули. Щелкните ЛКМ в центре поля справа от "Name:" и введите значение 10. Это целое значение количества пуль, доступных при начале игры.

Для уменьшения количества пуль при каждом выстреле мы используем Актуатор "Property Add", который мы использовали для создания движения базы пушки. Добавьте новый Актуатор, щелкнув по кнопку "Add" в столбце актуаторов. Свяжите его с Контроллером "AND", который мы создали в предыдущем шаге. Измените тип Актуатора на "Property" и выберите действие "Add". Введите "bullets" в поле "Prop:" и значение -1 в поле "Vlue:". Такие значения параметров будут вычитать 1 (или прибавлять -1) из параметра "bullets" при каждом выстреле по нажатию клавиши "Пробел".

Количество пуль теперь уменьшается, но пушка ничего не знает об их количестве и о том, закончились боеприпасы или нет. Чтобы это изменить, мы используем Expression Controller (Контроллер Выражений), который позволяет вводить однострочные выражения к общей системе логики. Измените тип Контроллера AND на Expression, щелкнув и удерживая ЛКМ кнопку выпадающего меню с выбором типов контроллера. Затем щелкните ЛКМ в поле "Exp:" и введите с клавиатуры "Space AND bullets>0" (без кавычек) и нажмите клавишу "Enter". Здесь "Space" - имя клавиатурного Сенсора (имя должно быть набрано так же, как вы его писали в поле имени сенсора), "bullets" - название параметра пули, в котором хранится количество пуль. Теперь Контроллер будет активировать связанный с ним Актуатор только если Сенсор "Space" активен (нажата клавиша Пробел) и количество пуль больше 0. Попробуйте еще раз запустить игру, и вы сможете выстрелить только 10 раз. Вы можете больше узнать о Выражениях в разделе (Expressions).

Последний шаг в создании полностью рабочей пушки - настройка работы индикатора количества пуль. Выберите индикатор (правый со вспышкой на нем) щелчком правой кнопкой мыши. Лучше всего щелкнуть по маленькой точке на символе "@" (которая является визуальной подсказкой для размещения объектов). В Окне кнопок в Разделе Логики и в левом нижнем углу окна 3D-вида должно появиться имя "BulletsDisplay". Вы также можете приблизить вид к объекту для облегчения процесса выбора индикатора.

После выбора индикатора вы можете заметить, что для этого объекта в Разделе Логики уже есть параметр с названием "Text". На объект наложена специальная текстовая текстура, которая отображает все содержимое в поле параметра "Text". Для проверки вы можете изменить число 10 в этом поле и изменение сразу отображатся на объекте (возможно, слегка прикрыто символом "@") в виде из камеры и при запуске Игрового Движка.

Поскольку параметры объектов локальны и доступны только в пределах объекта, к которому они принадлежат, нам нужно найти способ передать значения параметров из одного объекта в другой. Внутри одной сцены это может быть сделано с помощью Актуатора Proprty Copy. Другой способ - передача сообщений, используя который можно передавать значения даже между различными сценами.

Добавьте новую линию логических блоков для объекта "BulletsDisplay", как вы это делали раньше. Свяжите их между собой. Измените тип Актуатора на Property Actuator и введите с клавиатуры в поле "Copy". Смотрите Иллюстрацию (tc-copy).

Иллюстрация (tc-copy). Логические блоки для отображения количества пуль
Увеличить
Иллюстрация (tc-copy). Логические блоки для отображения количества пуль

Введите "Text" в первое поле "Prop:"' - это имя параметра в которое будет записываться значение. Введите "Gun" в поле "OB:" и обязательно проверьте корректно ли введено имя объекта (большие и малые буквы в Blender отличаются). Blender очистит поле если введенное вами имя объекта не существует в сцене. Из этого объекта мы будем брать значение. Введите с клавиатуры "bullets" в поле "Prop:" около поля "OB:" - это имя параметра из которого мы будем брать значение. Но нам нет необходимость копировать значение каждый кадр. Введите "10" в поле "f:" в Сенсоре Always - это задаст частоту копирование параметра раз в 10 кадров (6 раз в секунду), что значительно улучшит производительность игры.

Запустите игру и попробуйте расстрелять все пули. Посмотрите как работает индикатор.

Больше управления пушкой

Наклон пушки даст больше свободы в движении и динамики в игре. Мы используем ту же технику, как и при создании движения пушки вверх по трубе, совместив Кривые Анимации и Логические Блоки.

Выберите пушку и сверните Логические Блоки, щелкнув по маленькой стрелке image:GK2_CollapseLBicon.png в левом верхнем углу каждого из блоков. Это освободит место для следующей группы логических блоков.

Как и в случае с движение пушки вверх, в окне IPO-Кривых уже будут кривые анимации, которые мы можем использовать. Нам так же понадобиться параметр, который будет содержать значение угла поворота (наклон, вращение вокруг оси X). Добавьте новый параметр, нажав кнопку "ADD property" и дайте ему имя "rotgun".

Снова используйте кнопку "Add" и добавьте новые Сенсор, Контроллер и один ... нет, вы правы, на этот раз ДВА Актуатора. Вы уже знаете это из части о создании движения вверх. Нам нужен один актуатор для изменения параметра, и один для изменения формы кривых к окне IPO-кривых. Соедините новые логические блока, как показано на Иллюстрации (tc-up). Свернутые логические блоки - те что вы создали для выстрела.

Иллюстрация (tc-up). Логические блоки для поворота пушки вверх
Увеличить
Иллюстрация (tc-up). Логические блоки для поворота пушки вверх

Измените блоки в соответствии с иллюстрацией (tc-up) и введите в них все необходимые данные. Используя Актуатор "Property Add" мы увеличиваем значение "rotgun" на единицу при каждом нажатии Клавиши Вверх и затем проигрываем IPO-кривую анимации в соответствии с параметром "rotgun". Это будет поворачивать пушку.

Теперь самое время протестировать пушку. Каждый раз при нажатии клавиши СтрелкаВверх пушка должна немного подниматься. Остановите игру нажав клавишу "Esc". Для получения продолжительного движения нам нужно активировать режим пульсации нажав иконку на Сенсоре Keyboard. Это даст повторяющиеся импульсы от Сенсора и пушка будет подниматься вверх, пока клавиша СтрелкаВверх нажата. Это избавит вас от необходимости каждый раз нажимать и отпускать ее.

Теперь еще раз протестируйте поворот пушки. Наверняка, вы заметите что пушка поворачивается до некоторой степени и затем останавливается. Это происходит из-за кривых анимации (Ipo). Вы можете просмотреть кривые анимации переключив одно из окон в окно IPO-кривых анимации сочетанием клавиш SHIFT-F6 (Используйте SHIFT-F5 для переключения окна обратно в окно 3D-вида). Вы можете видеть что кривые горизонтальны с кадра 21, что означает что дальше не будет никакого вращения. Так же, вполне очевидно что нам нужно сделать "rotgun" отрицательным для создания вращения пушки вниз.

Иллюстрация (tc-rot). Окончательный вид системы Логических Блоков для наклона пушки
Увеличить
Иллюстрация (tc-rot). Окончательный вид системы Логических Блоков для наклона пушки

Еще раз добавьте Сенсор, Контроллер и один (да, на этот раз действительно один) Актуатор. Свяжите их и дайте им имена как показано на Иллюстрации (tc-rot). Заметьте что мы используем тот же IPO-Актуатор для наклона вниз. Это отличный способ сохранить систему логических блоков от лишних элементов. Но все будет работать так же хорошо, если вы решите использовать второй IPO-Актуатор как в случае с подъемом пушки.

image:GK2_note.png Если вы предпочитаете "пилотный" стиль управления просто поменяйте клавиши СтрелкаВверз и СтрелкаВниз в Сенсорах Keyboard.

Небольшое замечание: если вы нажмете клавишу СтрелкаВверх и будете удерживать ее слишком долго пушка перестанет подниматься, но параметр "rotgun" по прежнему будет увеличиваться. Это приведет к некоторому запаздыванию в движении пушки, когда вы захотите ее опустить. После нажатия клавиши СтрелкаВниз пройдет какое то время пока пушка начнет двигаться. Для предотвращения такой ситуации мы можем использовать Контроллер Expression (выражение). Посмотрите правильную форму выражения на иллюстрация (tc-exp).

Иллюстрация (tc-exp). Выражение для правильной остановки вращения пушки
Увеличить
Иллюстрация (tc-exp). Выражение для правильной остановки вращения пушки

Это выражение предотвратит увеличение значения "rotgun" когда его значение достигнет 21 или -21.

Самое время сохранить ваш проект! Blender-сцены обычно очень компактны и их сохранение занимает всего пару секунд. Сначала вам нужно упаковать (включить в файл-сцены) все текстуры. Для этого используйте меню "File->External Data->Pack into .blend file". Затем сохраните сцену на ваш жесткий диск. Это даст возможность не беспокоиться о текстурах (шрифтах и звуковых файлах) при копировании файла-сцены. Все они будут включены в ваш .blend файл. При открытии сцены на другом компьютере все файлы будут достпны и не потребуют их поиска на винчестере.

Таким способом вы можете посылать файл-сцены своим друзьям по e-mail и они получат все текстуры и дополнительные файлы вместе с игрой.

Для дальнейшей работы со сценой рекомендуется "распаковать" данные "File->External Data-> Unpack into Files...", затем выберите "Use files in current directory (create when necessary)".

Противники для стрельбы по ним

Пришло время добавить нечто, во что будем стрелять. Выберите объект "Target" щелчком ПКМ. Возможно, вам потребуется повернуть вид используя Среднюю Кнопку Мыши для лучшего обзора объекта.

Игровая Логика для противников должна:

  1. Реагировать на попадания (коллизии) пуль
  2. Делать глупое лицо при попадании и исчезать
  3. Добавлять немного очков к общему счету игрока

Вы можете заметить что я постарался сделать всю логику прямо на объекте-противнике. Но в принципе, есть возможность разместить всю логику на объекте-игроке либо на другом центральном объекте, что сделало бы поддержку системы логики для этого объекта очень сложной и запутанной. Еще один преимуществом создания системы логики прямо в объекте-противнике - это возможность повторного использования объекта даже в других сценах.

Мы сного начнем с создания Сенсора, Контроллера и Актуатора и связей между ними. Вы уже должны быть хорошо знакомы с процессом. Для реакции на удар, измените тип Сенсора на Сенсор Collision. В поле "Property:" введите "bullet" - это имя объекта, при соударении с которым сенсор будет активирован.

Иллюстрация x-y. Система Логических Блоков создающая у противников глупый вид
Увеличить
Иллюстрация x-y. Система Логических Блоков создающая у противников глупый вид

Измените тип Актуатора на "Edit Object" и выберите в качестве способа изменения объекта "Replace Mesh". Введите в поле "ME:" "TargetDead". Этот меш показывает исчезающего противника, и он будет показан с момента попадания в него пули (срабатывания Сенсора Collision). Пораженные противники попадают на скрытый 11 слой сцены, который вы можете включить нажатием сочетания клавиш "SHIFT-ALT-1".

image:GK2_important.png Не забудьте выключить слой 11, иначе выстрелы не будут работать правильно. Все от того, что добавляемые объекты должны находится в скрытом слое для правильной работы Актуатора "Add Object".

Для подсчета общего количества очков игрока мы используем систему сообщений Blender. Это позволит нам посылать "сообщения" из одного объекта в другой. В данном случае, мы будем сигнализировать монитору результатов что нужно добавить определенное количество очков к общему счету игрока. Для этого добавьте еще один Актуатор в систему логики противника. Свяжите его с существующим Контроллером и измените тип на "Message Actuator".

Поля "TO:" и "Body:" можно оставить пустыми. Лиш в поле "Subject:" введите "10 points". Это эквивалентно выстрелу в комнате и увеличение значения счетчика. ( This is equal to shouting into the room and the score-keeper will note the score. )

Теперь нам нужно сделать так, что бы монитор общего счета реагировал на сообщения. Выберите объект "Score-Display" и добавьте набор логических блоков, как показано на иллюстрации (tc-score).

Иллюстрация (tc-score). Система Логических Блоков для подсчета общего счета игрока
Увеличить
Иллюстрация (tc-score). Система Логических Блоков для подсчета общего счета игрока

"Score-Display" (экран результата) это снова объект со специальной текстурой на нем, показывающей содержимое параметра "Text" как в случае с индикатором пуль. Убедитесь что значение не равно 999, иначе при старте игры у игрока будет 999 очков. Измените значение параметра "Text" на 0. Сенсор Message будет реагировать лишь на сообщения "10points" и будет активировать Актуатор Property, который добавит 10 к имеющемуся значению параметра "Text". Таким образом очень просто добавить различное количество очков за различные действия. Просто добавьте новую линию логических блоков Сенсор в которой будет реагировать на другое сообщение и настройте в Актуаторе этой линии добавление другого количестве очков.

Теперь вам следует опробовать игру и сделать несколько выстрелов в противников. Каждый раз должно добавляться по 10 очков к общему счету. Если что то работает не так - еще раз проверьте настройки, в особенности связи между Логическим Блоками. Так же проверьте имена объектов и параметров в блоках указаны верно (большими и малыми буквами).

При запуске последней версии игры противники начинают сползать по трубе вниз. Посмотрите на Иллюстрацию (tc-adv) где изображено одно из возможных решений этой проблемы. Так же, если вы попробуете выстрелить в уже пораженного противника вы так же будете получать очки, чего не должно происходить (ведь так? :).

Иллюстрация (tc-adv). Дополнительная анимация для пораженных противников
Увеличить
Иллюстрация (tc-adv). Дополнительная анимация для пораженных противников

Мы уже использовали большинство из этих Логических Блоков. В целом, здесь используется Контроллер Expression для предотвращения добавления очков при повторном попадании в уже пораженных противников. Это сделано через проверку параметра frame, равен ли он 0. При попадании в противника этот параметр увеличивается на 1. Когда параметр frame равен 1 Сенсор Property имеющий тип "Interval" срабатывает каждый кадр от 1 до 200, передавая команду по которой цель смещается вниз каждый кадр. Когда параметр frame достигнет значения 200 противник становится пораженным с помощью Актуатора Edit Object.

Теперь вы можете разместить в трубе большее количество противников. Для этого выбелите противника ЛКМ, нажмите "ALT-D" для копирования объекта. Теперь, используя клавиши "G" для перемещения и "R" для вращения разместите нового противника.

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

Личные инструменты