Переменные
Переменные позволяют каждому монстру иметь собственное значение здоровья. Переменная – это просто значение, которое может меняться. Они хранятся в разных местах для каждой ситуации, поэтому называются переменными.
Давайте добавим переменную health (здоровье) для нашего монстра. Кликните по монстру на панели проектов или панели объектов. Как вариант, вы можете переключиться обратно на план и выбрать объект монстр. Откроются свойства монстра на панели свойств. Кликните Add/edit на Edit variables.
Появится окно Instance Variables. Оно похоже на диалоговое окно Behaviors (Режимов), которое мы видели ранее, но в данном окне вы можете изменять переменные ситуации для объекта. Кликните по зеленой кнопке Add, чтобы добавить новую переменную.
Во всплывающем окне напечатайте название health, оставьте Type в виде Number, а для Initial value введите 5. Так мы создали изначальный уровень здоровья для каждого монстра. Когда по монстру стреляют, мы вычисляем 1 со здоровья, а когда здоровье достигнет нуля, мы уничтожим объект.
Когда вы закончите, кликните OK. Обратите внимание, что теперь переменная появляется в диалоговом окне переменных ситуаций, а также в свойствах монстра. (Вы можете быстро изменить первоначальные значения на панели свойств, но для того, чтобы добавить или убрать переменные, надо кликнуть по линку Add / Edit).
Изменение событий
Переключитесь на event sheet (лист событий). Сейчас монстр умирает, как только пуля попадает в него. Давайте изменим это на subtract 1 (вычитать 1) из его здоровья.
Найдите событие, которое называется Bullet - on collision with Monster. Обратите внимание, что у вас есть действие "destroy monster" (уничтожить монстра). Давайте заменим его на "subtract 1 from health" (вычитать 1 из здоровья). Кликните правой кнопкой мыши по действию "destroy monster" и кликните Replace.
Появится то же диалоговое окно, как при создании нового действия, но теперь вместо создания действия, будет произведена замена действия, на которое мы нажали. Выберите Monster -> Subtract from (в категории Instance variables ) -> Instance variable "health", и введите 1 для Value. Кликните Done. Теперь действие должно выглядеть так:
Теперь, когда мы стреляем в монстра, он теряет 1 здоровье, пуля взрывается. Но мы еще не создали событие, при котором монстр будем умирать, когда уровень здоровья достигает нуля. Добавьте еще одно событие:
Condition: [i]Monster -> Compare instance variable ->[/i] Health, [i]меньше или равно нулю[/i], 0
Action: [i]Monster -> Spawn another object ->[/i] Explosion, layer [b]1[/b]
Action: [i]Monster -> Destroy[/i]
Почему меньше или равно нулю, а не просто равно нулю? Предположим, мы добавили еще одно более мощное оружие, которое уменьшило уровень здоровья монстра на 2. Когда вы стреляете в монстра, его здоровье может быть 5, 3, 1, -1, -3.... Обратите внимание, что при любом из этих показателей уровень здоровья не был равен нулю. Поэтому при значении равно нулю монстр бы не умер! Поэтому полезно попрактиковаться со значением «меньше или равно» для определения уровня здоровья объекта.
Запустите игру. Теперь, чтобы убить монстра, необходимо выстрелить в него пять раз.
Счет
Давайте создадим счет, чтобы игрок знал свою продуктивность. Для этого нам понадобится еще одна переменная. Вы можете подумать «давайте поставим счет, как одну из переменных ситуаций игрока!». Вначале это кажется неплохой идеей, но помните, что значение хранится в объекте. Если нет ситуаций, не будет и переменных! Поэтому если мы уничтожим игрока, мы не будем знать счет, потому что он тоже будет уничтожен.
Мы может использовать global variable (глобальная переменная). Как и переменная ситуации, глобальная переменная (или просто "global") может хранить текст или цифру. Каждая переменная может хранить одну цифру или отдельный кусочек текста. Глобальные переменные также доступны для всей игры во всех планах, что удобно при добавлении других слоев.
Кликните правой кнопкой мыши на нижней части листка событий и выберите Add global variable (Добавить глобальную переменную).
Введите имя Score (Счет). Другие значения по умолчанию подходят нам. Они начинают отсчет с нуля.
Глобальная переменная появится в виде линии на листке событий. Она находится на этом листке событий, но доступна на любом листке событий и на любом плане.
Внимание: существуют также локальные переменные, которые доступны только для некоторых событий, но мы их не рассматриваем.
Давайте дадим игроку очко за убийство монстра. В нашем событии "Monster: health less or equal 0" (когда монстр умирает), кликните Add action, и выберите System-> Add to (under Global & local variables) (под глобальными и локальными переменными)-> Score, value 1. Теперь событие должно выглядеть так:
Теперь у игрока есть счет, который увеличивается на 1 за каждого убитого монстра. Но игрок не видит счет! Давайте покажем его с помощью объекта текст.