10 KiB
10 KiB
Практическая работа
Данный проект будет выполнятся в течении всего курса.
Домашняя работа к уроку 3 (Система боя)
- Убирать монетку при соприкосновении с игроком. Использовать метод, который за это отвечает и применить его в нужном месте.
- Создать новый тип бонуса на уровне - аптечки, которые могут хранить разную величину лечения. При соприкосновении аптечки с любым объектом, содержащим компонент Health, аптечка должна добавить объекту величину лечения и пропасть с игровой сцены.
Домашняя работа к уроку 4 (Анимация в Unity)
- Создать из спрайтов две анимации для противника (волка): ходьба и укус. Настроить переходы между этими анимациями в аниматоре волка.
- Добавить необходимые параметры и запрограммировать их так, чтобы волк двигался и при столкновении с персонажем кусал его. Допускается небольшое отставание от момента укуса до анимации укуса.
Графику для игры скачивайте отсюда
Проект урока с настроенными скриптами и анимацией скачивайте здесь
Домашняя работа к уроку 5 (ООП)
- Описать класс Cat (кошка), который будет хранить 5 параметров: имя, возраст, вес, рост и длина хвоста. Класс также должен содержать метод «Мяу», выводящий информацию о кошке на консоль. Затем «переделать» класс Cat в структуру и посмотреть, что от этого изменится.
- В классе Cat описать два конструктора: один с параметрами, другой без параметров. Конструктор с параметрами должен инициализировать ВСЕ поля, которые содержатся в классе Cat. Также требуется создать два свойства: одно содержит только аксессор (метод) get, второе – автоматическое, отражающее вес кота (соответствующее поле при этом удалить). Свойствами воспользоваться в методе «Мяу». Проверить функциональность новых элементов в методе Start.
- В скрипте PlayerInventory реализовать паттерн (шаблон) Singleton. Убрать из PlayerInvenroty метод OnTriggerEnter2D(…) и сделать начисление монеток путем обращения к Instance этого класса. Сбор монет реализовать в скрипте Player.
- Создать абстрактный класс Vehicle (транспортное средство) и три его наследника: автобус, автомобиль и трактор. В Vehicle реализовать два члена – поле «имя» и АБСТРАКТНЫЙ метод Beep(), создающий некоторый звук (с помощью Debug.Log). Последний у наследников переопределить и описать любое понравившееся вам тело этого метода. Переделать этот метод в виртуальный, определив базовый функционал, к которому нужно обратиться из методов наследников с помощью оператора base.
- Переделать во всех скриптах публичные поля на приватные с возможностью доступа к ним из инспектора Unity. Для взаимодействия с этими переменными из других классов определить для них свойства с заданными ограничениями на допустимые для присвоения параметры.
"Порядок выполнения методов в Unity":https://docs.unity3d.com/ru/current/Manual/ExecutionOrder.html
"Принцип KISS":https://web-creator.ru/articles/kiss
"Наследование":https://metanit.com/sharp/tutorial/3.7.php
"Полиморфизм":https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/polymorphism
"Инкапсуляция":https://metanit.com/sharp/tutorial/3.4.php
Домашняя работа к уроку 6 (Системы стрельбы)
- Добавить перезарядку персонажа, используя сопрограммы. Примерный вариант алгоритма: перед выстрелом осуществляется проверка некоторой булевой переменной, которая отображает, готов ли игрок к выстрелу.При удачном выстреле запускается корутина, которая отсчитывает время перезарядки, установленное из инспектора, при это изменяя значение вышеописанной булевой переменной.
- Добавить анимацию стрельбы (иллюстрации взять из материалов урока). Переход в анимацию стрельбы возможен, если персонаж не падает и не прыгает в данный момент. Выпуск стрелы сделать анимационным событием, которое рассмотрено в первых частях урока.
Домашняя работа к уроку 7 (Производительность и оптимизация)
- Переделать скрипт CollisionDamage на новую оптимизированную архитектуру получения компонентов с GameManager в главной роли.
- Добавить графическое оформление ко всем своим уровням. Сделать несколько разных по спрайтам префабов платформ и заменить «квадрат» аптечки на соответствующую анимацию. Графику для игры скачивайте отсюда.
- Сделать анимацию получения урона для персонажа и встроить ее в аниматор-контоллер. Помимо этого добавить два декоративных препятствия, которые наносят урон герою: ядовитый мох и разбитые кристаллы.
Домашняя работа к уроку 8 (Производительность и оптимизация)
- Создать меню, которое открывается по нажатию кнопки «Пауза». Меню может быть представлено в виде небольшой или полноэкранной панели с кнопками «Продолжить игру», «Звук», «Выйти в меню» и «Выйти из игры». Кнопка «Звук» не должна работать, однако она должна сохранять свое значение в PlayerPrefs (возможно, хорошим выбором в этом случае будет использование Int, где 0 – это false, а 1 – это true). В зависимости от своего состояния кнопка «Звук» должна изменять либо надпись, либо само изображение.
- Дополнительное ДЗ. Если у вас в проекте уже существует несколько уровней, сделать в основном меню кнопку «Уровни», при нажатии на которую открывается панель с упорядоченным набором кнопок. Нажатие на кнопку ведет на соответствующий уровень.
Домашняя работа к уроку 9 (Система инвентаря)
- Добавить по выбранному шаблону обработку баффов на игрока. Изменить название TestMethod на более соответствующее имя. Добавить игроку три новых поля (возможно в разных скриптах): forceBonus, armorBonus и damageBonus.
- В методе обработки баффов, изменять значения forceBonus, armorBonus и damageBonus в зависимости от баффов, накладываемых на игрока. В момент использования текущих переменных force, damage и health накладывать на них повышающие или понижающие коэффициенты, которые хранятся в BuffReciever.
- Доработать InventoryUIController с помощью Action таким образом, чтобы при нажатии на ячейку происходило обновление всего инвентаря.
Ссылки, упоминаемые в уроке: Custom Editors , ScriptableObject