Files
hw-pixelone-course-creating…/Platformer/README.md
2023-06-11 00:35:07 +03:00

10 KiB
Raw Blame History

Практическая работа

Данный проект будет выполнятся в течении всего курса.

Домашняя работа к уроку 3 (Система боя)

  1. Убирать монетку при соприкосновении с игроком. Использовать метод, который за это отвечает и применить его в нужном месте.
  2. Создать новый тип бонуса на уровне - аптечки, которые могут хранить разную величину лечения. При соприкосновении аптечки с любым объектом, содержащим компонент Health, аптечка должна добавить объекту величину лечения и пропасть с игровой сцены.

Домашняя работа к уроку 4 (Анимация в Unity)

  1. Создать из спрайтов две анимации для противника (волка): ходьба и укус. Настроить переходы между этими анимациями в аниматоре волка.
  2. Добавить необходимые параметры и запрограммировать их так, чтобы волк двигался и при столкновении с персонажем кусал его. Допускается небольшое отставание от момента укуса до анимации укуса.

Графику для игры скачивайте отсюда

Проект урока с настроенными скриптами и анимацией скачивайте здесь

Домашняя работа к уроку 5 (ООП)

  1. Описать класс Cat (кошка), который будет хранить 5 параметров: имя, возраст, вес, рост и длина хвоста. Класс также должен содержать метод «Мяу», выводящий информацию о кошке на консоль. Затем «переделать» класс Cat в структуру и посмотреть, что от этого изменится.
  2. В классе Cat описать два конструктора: один с параметрами, другой без параметров. Конструктор с параметрами должен инициализировать ВСЕ поля, которые содержатся в классе Cat. Также требуется создать два свойства: одно содержит только аксессор (метод) get, второе автоматическое, отражающее вес кота (соответствующее поле при этом удалить). Свойствами воспользоваться в методе «Мяу». Проверить функциональность новых элементов в методе Start.
  3. В скрипте PlayerInventory реализовать паттерн (шаблон) Singleton. Убрать из PlayerInvenroty метод OnTriggerEnter2D(…) и сделать начисление монеток путем обращения к Instance этого класса. Сбор монет реализовать в скрипте Player.
  4. Создать абстрактный класс Vehicle (транспортное средство) и три его наследника: автобус, автомобиль и трактор. В Vehicle реализовать два члена поле «имя» и АБСТРАКТНЫЙ метод Beep(), создающий некоторый звук (с помощью Debug.Log). Последний у наследников переопределить и описать любое понравившееся вам тело этого метода. Переделать этот метод в виртуальный, определив базовый функционал, к которому нужно обратиться из методов наследников с помощью оператора base.
  5. Переделать во всех скриптах публичные поля на приватные с возможностью доступа к ним из инспектора 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. Добавить перезарядку персонажа, используя сопрограммы. Примерный вариант алгоритма: перед выстрелом осуществляется проверка некоторой булевой переменной, которая отображает, готов ли игрок к выстрелу.При удачном выстреле запускается корутина, которая отсчитывает время перезарядки, установленное из инспектора, при это изменяя значение вышеописанной булевой переменной.
  2. Добавить анимацию стрельбы (иллюстрации взять из материалов урока). Переход в анимацию стрельбы возможен, если персонаж не падает и не прыгает в данный момент. Выпуск стрелы сделать анимационным событием, которое рассмотрено в первых частях урока.

Домашняя работа к уроку 7 (Производительность и оптимизация)

  1. Переделать скрипт CollisionDamage на новую оптимизированную архитектуру получения компонентов с GameManager в главной роли.
  2. Добавить графическое оформление ко всем своим уровням. Сделать несколько разных по спрайтам префабов платформ и заменить «квадрат» аптечки на соответствующую анимацию. Графику для игры скачивайте отсюда.
  3. Сделать анимацию получения урона для персонажа и встроить ее в аниматор-контоллер. Помимо этого добавить два декоративных препятствия, которые наносят урон герою: ядовитый мох и разбитые кристаллы.

Домашняя работа к уроку 8 (Производительность и оптимизация)

  1. Создать меню, которое открывается по нажатию кнопки «Пауза». Меню может быть представлено в виде небольшой или полноэкранной панели с кнопками «Продолжить игру», «Звук», «Выйти в меню» и «Выйти из игры». Кнопка «Звук» не должна работать, однако она должна сохранять свое значение в PlayerPrefs (возможно, хорошим выбором в этом случае будет использование Int, где 0 это false, а 1 это true). В зависимости от своего состояния кнопка «Звук» должна изменять либо надпись, либо само изображение.
  2. Дополнительное ДЗ. Если у вас в проекте уже существует несколько уровней, сделать в основном меню кнопку «Уровни», при нажатии на которую открывается панель с упорядоченным набором кнопок. Нажатие на кнопку ведет на соответствующий уровень.

Домашняя работа к уроку 9 (Система инвентаря)

  1. Добавить по выбранному шаблону обработку баффов на игрока. Изменить название TestMethod на более соответствующее имя. Добавить игроку три новых поля (возможно в разных скриптах): forceBonus, armorBonus и damageBonus.
  2. В методе обработки баффов, изменять значения forceBonus, armorBonus и damageBonus в зависимости от баффов, накладываемых на игрока. В момент использования текущих переменных force, damage и health накладывать на них повышающие или понижающие коэффициенты, которые хранятся в BuffReciever.
  3. Доработать InventoryUIController с помощью Action таким образом, чтобы при нажатии на ячейку происходило обновление всего инвентаря.

Ссылки, упоминаемые в уроке: Custom Editors , ScriptableObject