Продолжаем извращаться с АБС
ИНТЕРФЕЙС
Прежде чем делать смену оружия по кнопке, учитывание кол-ва патронов и магазинов при выстреле и перезарядку, нам надо сделать графическое отображение всего этого,чтобы тест не проходил вслепую.
1 ШАГ
Для отображения интерфейса нам во-первых надо его нарисовать. Что-то типа такого.
Спойлер нг:
1) "фон" на которой будут нужные иконки,цифры. В демке это "НАЧ" - т.е. начальный пустой интерфейс. На нём слева большое поле для отображения там оружия которое у нас экипировано (красная стрелка на рисунке указывает на это окошко). Правее него два нбеольших окошка,в которых у нас будет показано то оружие,которое у нас есть в инвентаре (зеленая стрелка).
2) иконки оружия. Требуется большие иконки для экипированного оружия ("ГЛ ИК ДРОБ" - главная иконка дробовик" и "ГЛ ИК ПИСТ" - главная иконка пистолет", отмеченные желтой стрелкой) и небольшие иконки для отображения в окошках инвентаря - "пистолет" и "дроб"(фиолетовая стрелка)
3) цифры,показывающее кол-во патронов. Пока сделаем чтоб у нас цифры были только однозначные. (П 0 - П 9) - синий квадратик
4) цифры,показывающие кол-во обойм(магазинов) (ОБ 0 - ОБ 9) - черный квадратик
2 ШАГ
1) Создаем общее событие "интерфейс". Для удобства сделаем его параллельным и запускаяющимся от переключателя "интерфейс".
2) Создаем ветвление "интерфейс включен",чтобы при привязке выключении переключателя "интерфейс" к кнопке все картинки удалились с экрана
3) Внутри ветвления - "показать изборажение". и,собственно говоря,показываем изображение "нач"
4) Далее создаем ветвления следующие друг за другом проверяющие какое оружие в экипировке. Внутри них показывает изображение. ID (номер) изображений должно быть у них ОДИНАКОВОЕ и при этом БОЛЬШЕ ID изображения "нач", дабы иконки изображались сверху окошка а не под ним.
Спойлер кнглкнл:
5) Создаем для удобства оружие "пусто", которое означает то,что в руках героя ничего нет. Создаем ветвление проверяющее экипировку оружием "пусто",а внутри него - удалить изображение с ID которое было у изображений в предыдущем пункте
6) делаем подобное для отображения иконок в окошках,проверяющих какое оружие есть в инвентаре. Т.е. когда мы возьмем оружие из сундука то оно сразу же отобразиться в этих окошках. ID изображений должно быть больше ID изображений "нач" и не совпадать с ID изображений,рассметоренны в предыдущих двух пунктах
Получится что-то типа этого.
Спойлер нглкнл:
3 ШАГ
1) создаем ветвление "если герой экипирован "пусто". В этом случае мы удаляем изображения которые у нас будут обозначать обоймы.
2) ИНАЧЕ - ветвления проверяющие чему равны переменные "обойма" и "патроны" и отображение кратинки с соответствующим номером.
ID картинок в ветвлениях с "патронами" должны быть одинаковыми и не совпадать с ID кратинок с иконками и окошками
То же самое с "обоймами"
Спойлер клн:
4 ШАГ
Во втором пункте 2-ого шага в ветвлении "или" УДАЛЯЕМ ВСЕ картинки,использованные выше
Спойлер кнглк:
ПЕРЕЗАРЯДКА
1 ШАГ
1) Во-первых,вернемся в общему событию "управление."
Стрелять на Энтер а менять оружие на "отмена "(ESC) очень неудобно.
Меняем кнопки на Q и W, т.е. в скрипте пишем Input.isTriggered('pagedown') и Input.isTriggered('pageup')
2) Внутри них ссылаемся на общие события "выстрел" и "смена оружия"
Спойлер кнлн:
3) смену оружия пока не трогаем,а во выстрел изменим.
2 ШАГ
Когда оружие надо перезарядить? Когда патронов нет,т.е. они равны нулю, а обойм(магазинов) НЕ ноль
1) создаем ветвление "переменная "патроны" = 0",а внутри него - ветвление "если переменная обоймы = 0"
2) если патронов НОЛЬ а обойм ИНАЧЕ чем НОЛЬ - происходит перезарядка.
3) если патронов НОЛЬ и обойм НОЛЬ,то воспроизводим звук разряженного оружия, напрмиер звук "key" подходит для этого
4) если патронов НЕ НОЛЬ происходит выстрел,а потому запускаем общее событие "выстрел".
5) раскидываем всё это для разных видов оружия. То есть ссылаемся на общее событие "выстрел пистолета и "перезарядка пистолета" вместо просто "перезарядка" и "выстрел"
Спойлер кнглкн:
3 ШАГ
Собственно,сама перезарядка
Спойлер кнглкн:
1) делаем два звуковых сигнала. Один для начала перезарядки а второй - для окончания перезарядки. Между ними вставляем команду "ждать",равную стольким кол-во кадров,сколько вы хотите чтобы длилась перезарядка. Очевидно,что для пистолета она будет намного меньше чем для дробовика, а для базуки еще намного больше.
2) создаем переменную "патроны пистолета" и приравниваем ее к такому числу,сколько вы хотите патронов в обойме. Пусть будет 8. Будем считать что это старый несовременный пистолет.
3) приравниваем переменную "патроны",которая у нас будет выводится на экране интерфейса, к переменной "патроны пистолета"
4) ОТНИМАЕМ обойму, так как при перезарядки кол-во магазинов уменьашется на один
5) Ну и приравниваем кол-во обойм к числу обойм пистолета в интветаре
То же самое делаем для других оружий,меняя кол-во патронов в магазине, время перезарядки, обоймы в инвентаре и переменные "патроны пистолет" на "патроны нужного оружия"
Спойлер нлкн:
ВЫСТРЕЛЫ
Помните общее событие "выстрелы" из прошлого урока? Теперь его надо чуть подправить для того,чтобы учитывалось кол-во патронов
Для этого перед каждым звуком в ветвлениях для КАЖДОГО патрона доабвляем команды "переменная"патроны такого-то оружия-1", а затем приравниваем переменную "патроны" к этой переменной.
Спойлер нлк:
Ну и не забываем при доабвлении оружия добавлять страницы в событиях "патроны" на карте.
Также там меняем урон от врагов вычитай из переменной "враг здоровье" нужное число. У меня эти числа одинаковые,но заменив двойка на 4 у дробовика он станет наносить больше урона.
Также в маршруте события регулируем дальность выстрела кол-вом команд "вперед"
Спойлер нл:
СМЕНА ОРУЖИЯ
Сделаем следующий алгоритм:
- если у героя нет НИЧЕГО в руках и НИЧЕГО в инвентаре то при кнопку на смену оружия НИЧЕГО не происходит
- если у героя нет НИЧЕГО в руках и есть пистолет в инвентаре то при кнопку на смену оружия экипируется пистолет
- если у героя есть ПИСТОЛЕТ в руках и больше НИЧЕГО в инвентаре то при кнопку на смену оружия НИЧЕГО не происходит. То есть возврат к пустым рукам не происходит,так как нам это не надо.
- если у героя есть ПИСТОЛЕТ в руках и ДРОБОВИК в инвентаре то при кнопку на смену оружия экипируется дробовик
- если у героя есть ДРОБОВИК в руках то при кнопку на смену оружия экипируется пистолет
1 ШАГ
1) Просто делаем всё это ветвлениями и добавлением команд "экипировать". При ветвлении "имеет пистолет" не забываем поставить галочку "включая экипировку"
2) Не забываем приравнять кол-во патронов в кол-ву патронов пистолета/дробовика/другого оружия. А кол-во обойм пистолета приравнят к кол-во обойм в инвентаре
Спойлер лнк:
Вот вроде и всё,надеюсь ничего не забыл.
Теперь при нажатии на W игрок стреляет, а на кнопку Q - меняет оружие.
Шпаргалка для настройки оружия:
- дальность оружия в маршруте событий "патрон 1 - патрон 4" кол-вом команд "вперед"
- урон оружия в этом же событии, внутри ветвлений с врагами,то есть отнимает из "враг здоровье" число,равное урону
- время перезарядке в общем событии "перезарядка" в "ждать"
- кол-во патронов в магазине также в общем событии "перезарядка"
ДЕМКА
Берем пистолет у того нпс,что выше и правее. При втором нажатии берем дробовик. Стреляем,радуемся, [strike]ловим баги[/strike] багов вроде нет
ссыль
Социальные закладки