13.47M

4. Бонусы

1.

Повтор
На прошлом уроке мы
⮚ Научились двигать фон
⮚ Добавили стены (препятствия)
⮚ Добавили турели
⮚ Научили турели стрелять только
при приближении игрока

2.

Сегодня на уроке…
⮚ Добавим бонус скорости
атаки
⮚ Добавим дополнительные
орудия нашему игроку

3.

Бонусы
Для того, чтобы добавить бонусы,
нам нужно сначала придумать,
какие типы бонусов мы можем
реализовать в нашей игре

4.

Бонусы
Один из бонусов может давать
дополнительную пушку для
нашего космического корабля

5.

Бонусы
Один из бонусов может давать
дополнительную пушку для
нашего космического корабля
Другой бонус может увеличивать
скорострельность пушек

6.

Бонусы
Один из бонусов может давать
дополнительную пушку для
нашего космического корабля
Другой бонус может увеличивать
скорострельность пушек
Создание бонусов зависит только
от вашего воображения

7.

Бонус скорострельности
Мы начнём с чего-то попроще
Реализовать бонус
скорострельности будет очень
легко!

8.

Бонус скорострельности
Для начала создайте сам
бонус – объект, который
нам нужно будет
подобрать, для получения
дополнительной скорости
атаки
Дайте ему коллайдер и
сделайте его триггером
(чтобы он не
взаимодействовал с
кораблями и пулями)
Делаем триггером

9.

Бонус скорострельности
Новый тег
Также для нашего
бонуса нужно будет
создать и установить
новый тег, с помощью
которого система будет
определять, коснулся ли
игрок бонуса и какой
это бонус
Назовите тег
BonusAttackSpeed

10.

Скрываем
Update()
Скрываем
Reload()
Используя кнопки –
рядом с функциями и
пр. мы можем
скрывать всё, что
находится внутри них

11.

Вернуть
Update()
Сокрытый код можно
всегда показать, с
помощью +

12.

При касании с
триггером, имеющим
тег BonusAttackSpeed
мы будем уменьшать
время перезарядки на
0.05 секунд (или
любое другое время
по вашему желанию)
А также удаляем
бонус, который
подобрали

13.

Бонус скорострельности
При правильной и аккуратной
настройке вы сможете сделать
данный бонус весьма
сбалансированным
Мы советуем по умолчанию
ставить скорость атаки на 0.5с и
снижать задержку между
выстрелами на 0.05с за каждый
бонус

14.

Получилось реализовать
бонус? Отлично!

15.

Однако перед этим, у
нас может возникнуть
неприятный баг с
бонусами скорости
атаки
Сможете ли вы
догадаться, в чём может
быть проблема?
Или, может быть вы уже
столкнулись с какойлибо проблемой?

16.

Бонус скорострельности
При подборе слишком
большого количества
бонусов, наша задержка
скорости атаки может стать
равной нулю
В таком случае мы рискуем
слишком сильно нагрузить
нашу игру и сломать в ней
баланс

17.

Вернёмся к нашему
скрипту и модифицируем
его

18.

Если после подбора
бонуса время
перезарядки упадёт
ниже значения 0.1, мы
установим это значение
на 0.1
Таким образом 0.1 –
минимальное время
перезарядки орудий

19.

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

20.

Бонус скорострельности
Расставьте бонусы на вашем
игровом уровне
Старайтесь устанавливать
бонусы равномерно, и
периодически ставьте их в
труднодоступные для игрока
места, чтобы разнообразить
игру
Игроку придётся
уклонятся от турели,
чтобы получить бонус

21.

Бонус дополнительных орудий
А вот реализация
дополнительных орудий
будет немного тяжелее, но
мы с вами обязательно
справимся!

22.

Бонус дополнительных орудий
Новый тег
Для начала, как и с
предыдущим бонусом
создайте сам бонус, который
мы будем подбирать
Создайте и добавьте для него
новый тег BonusAddGun
А также не забудьте добавить
коллайдер и сделать его
триггером
Триггер

23.

Бонус дополнительных орудий
Следующим шагом, мы
добавим нашему
кораблю
дополнительные пушки,
которые будут стрелять
после подбора бонуса

24.

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

25.

Теперь вернёмся к коду

26.

Давайте вспомним, как
работает стрельба
При нажатии на кнопку
атаки и если мы готовы
стрелять, мы создаём
пулю и перемещаем её
к владельцу скрипта
(игроку)

27.

Для начала мы добавим 3
новых переменных
shipLevel будет
определять уровень
корабля игрока и
изменять количество
рабочих пушек
gunLeft и gunRight
нужны для сохранения
позиции пушек, чтобы к
ним перемещать пули

28.

Теперь в том же скрипте
спустимся немного ниже,
к функции Update()
Не запутайтесь в фигурных
скобках, условиях и функциях

29.

Теперь в том же скрипте
спустимся немного ниже,
к функции Update()
Стрельба
одной пушкой

30.

Стрельбу одной пушкой
мы уберём в отдельное
условие
Одной пушкой теперь
мы будем стрелять
только если уровень
корабля равен 1
В отдельном
условии

31.

Далее, добавляем новое
условие:
Если уровень корабля
больше 1, то мы стреляем
из двух пушек
Создаём пулю
Перемещаем к
позиции первой
пушки
Во втором условии указываем
shipLevel > 1 чтобы наши орудия
работали и при более высоком
уровне корабля

32.

Последний шаг –
добавить обработку
касания с бонусом
Для второго условия мы не
создаём новую функцию
OnTriggerEnter2D(), а продолжаем
писать в существующей
Повышаем
уровень корабля

33.

Не забываем перетащить
пушки в
соответствующие
переменные в нашем
персонаже

34.

Бонус дополнительных орудий
Сделали всё правильно?
Если да, то ваш персонаж при подборе
данного бонуса наш корабль начнёт
стрелять с двух орудий
Произошла ошибка? Посмотрите в
консоли, в чём проблема
Также проверьте, нет ли ошибок в коде

35.

Дополнительное задание
1) Расставьте новые бонусы на сцене
1) Попробуйте самостоятельно
улучшить бонус дополнительных
орудий как минимум ещё на 1
уровень

36.

Код для стрельбы с трёх
орудий
Здесь вместо создания 3го
орудия мы создаём 3ую
пулю в нашем игроке
(transform.position)
Но можно создать и
отдельное орудие

37.

Дополнительное задание
Теперь подбирая бонусы наш
персонаж становится
серьёзным противником!
Продолжайте работать над
игровым уровнем (или
создайте новый, если первый
вы уже закончили)
Расставляйте турели, стенки
(препятствия) и бонусы
Улучшайте бонусы и
создавайте новые!
English     Русский Rules