67 lines
10 KiB
Markdown
67 lines
10 KiB
Markdown
|
|
# Практическая работа
|
|||
|
|
|
|||
|
|
Данный проект будет выполнятся в течении всего курса.
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 3 (Система боя)
|
|||
|
|
|
|||
|
|
1. Убирать монетку при соприкосновении с игроком. Использовать метод, который за это отвечает и применить его в нужном месте.
|
|||
|
|
1. Создать новый тип бонуса на уровне - аптечки, которые могут хранить разную величину лечения. При соприкосновении аптечки с любым объектом, содержащим компонент Health, аптечка должна добавить объекту величину лечения и пропасть с игровой сцены.
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 4 (Анимация в Unity)
|
|||
|
|
|
|||
|
|
1. Создать из спрайтов две анимации для противника (волка): ходьба и укус. Настроить переходы между этими анимациями в аниматоре волка.
|
|||
|
|
1. Добавить необходимые параметры и запрограммировать их так, чтобы волк двигался и при столкновении с персонажем кусал его. Допускается небольшое отставание от момента укуса до анимации укуса.
|
|||
|
|
|
|||
|
|
Графику для игры скачивайте [отсюда](https://drive.google.com/drive/folders/1f23vJ4d-v7M-KU84uaADfBHvAWNfQAQK?usp=sharing)
|
|||
|
|
|
|||
|
|
Проект урока с настроенными скриптами и анимацией скачивайте [здесь](https://drive.google.com/drive/folders/1ORgco-TY-jYP1k2HNAspxxVEMfubD2Ej?usp=sharing)
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 5 (ООП)
|
|||
|
|
|
|||
|
|
1. Описать класс Cat (кошка), который будет хранить 5 параметров: имя, возраст, вес, рост и длина хвоста.
|
|||
|
|
Класс также должен содержать метод «Мяу», выводящий информацию о кошке на консоль. Затем «переделать» класс Cat в структуру и посмотреть, что от этого изменится.
|
|||
|
|
1. В классе Cat описать два конструктора: один с параметрами, другой без параметров.
|
|||
|
|
Конструктор с параметрами должен инициализировать ВСЕ поля, которые содержатся в классе Cat.
|
|||
|
|
Также требуется создать два свойства: одно содержит только аксессор (метод) get, второе – автоматическое, отражающее вес кота (соответствующее поле при этом удалить). Свойствами воспользоваться в методе «Мяу». Проверить функциональность новых элементов в методе Start.
|
|||
|
|
1. В скрипте PlayerInventory реализовать паттерн (шаблон) Singleton. Убрать из PlayerInvenroty метод OnTriggerEnter2D(…) и сделать начисление монеток путем обращения к Instance этого класса. Сбор монет реализовать в скрипте Player.
|
|||
|
|
1. Создать абстрактный класс Vehicle (транспортное средство) и три его наследника: автобус, автомобиль и трактор.
|
|||
|
|
В Vehicle реализовать два члена – поле «имя» и АБСТРАКТНЫЙ метод Beep(), создающий некоторый звук (с помощью Debug.Log). Последний у наследников переопределить и описать любое понравившееся вам тело этого метода. Переделать этот метод в виртуальный, определив базовый функционал, к которому нужно обратиться из методов наследников с помощью оператора base.
|
|||
|
|
1. Переделать во всех скриптах публичные поля на приватные с возможностью доступа к ним из инспектора 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 (Системы стрельбы)
|
|||
|
|
|
|||
|
|
1. Добавить перезарядку персонажа, используя сопрограммы. Примерный вариант алгоритма: перед выстрелом осуществляется проверка некоторой булевой переменной, которая отображает, готов ли игрок к выстрелу.При удачном выстреле запускается корутина, которая отсчитывает время перезарядки, установленное из инспектора, при это изменяя значение вышеописанной булевой переменной.
|
|||
|
|
1. Добавить анимацию стрельбы (иллюстрации взять из материалов урока). Переход в анимацию стрельбы возможен, если персонаж не падает и не прыгает в данный момент. Выпуск стрелы сделать анимационным событием, которое рассмотрено в первых частях урока.
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 7 (Производительность и оптимизация)
|
|||
|
|
|
|||
|
|
1. Переделать скрипт CollisionDamage на новую оптимизированную архитектуру получения компонентов с GameManager в главной роли.
|
|||
|
|
1. Добавить графическое оформление ко всем своим уровням. Сделать несколько разных по спрайтам префабов платформ и заменить «квадрат» аптечки на соответствующую анимацию. Графику для игры скачивайте отсюда.
|
|||
|
|
1. Сделать анимацию получения урона для персонажа и встроить ее в аниматор-контоллер. Помимо этого добавить два декоративных препятствия, которые наносят урон герою: ядовитый мох и разбитые кристаллы.
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 8 (Производительность и оптимизация)
|
|||
|
|
|
|||
|
|
1. Создать меню, которое открывается по нажатию кнопки «Пауза».
|
|||
|
|
Меню может быть представлено в виде небольшой или полноэкранной панели с кнопками «Продолжить игру», «Звук», «Выйти в меню» и «Выйти из игры».
|
|||
|
|
Кнопка «Звук» не должна работать, однако она должна сохранять свое значение в PlayerPrefs (возможно, хорошим выбором в этом случае будет использование Int, где 0 – это false, а 1 – это true).
|
|||
|
|
В зависимости от своего состояния кнопка «Звук» должна изменять либо надпись, либо само изображение.
|
|||
|
|
2. Дополнительное ДЗ. Если у вас в проекте уже существует несколько уровней, сделать в основном меню кнопку «Уровни», при нажатии на которую открывается панель с упорядоченным набором кнопок. Нажатие на кнопку ведет на соответствующий уровень.
|
|||
|
|
|
|||
|
|
## Домашняя работа к уроку 9 (Система инвентаря)
|
|||
|
|
|
|||
|
|
1. Добавить по выбранному шаблону обработку баффов на игрока.
|
|||
|
|
Изменить название TestMethod на более соответствующее имя. Добавить игроку три новых поля (возможно в разных скриптах): forceBonus, armorBonus и damageBonus.
|
|||
|
|
1. В методе обработки баффов, изменять значения forceBonus, armorBonus и damageBonus в зависимости от баффов, накладываемых на игрока. В момент использования текущих переменных force, damage и health накладывать на них повышающие или понижающие коэффициенты, которые хранятся в BuffReciever.
|
|||
|
|
1. Доработать InventoryUIController с помощью Action таким образом, чтобы при нажатии на ячейку происходило обновление всего инвентаря.
|
|||
|
|
|
|||
|
|
Ссылки, упоминаемые в уроке: [Custom Editors](https://docs.unity3d.com/Manual/editor-CustomEditors.html) , [ScriptableObject](https://docs.unity3d.com/Manual/class-ScriptableObject.html)
|