1.68M
Категория: ПрограммированиеПрограммирование

Розробка багаторівневої 2D гри-платформера «Knight Guardian»

1.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ВІДОКРЕМЛЕНИЙ СТРУКТУРНИЙ ПІДРОЗДІЛ
ЖИТОМИРСЬКИЙ ТЕХНОЛОГІЧНИЙ ФАХОВИЙ КОЛЕДЖ
КИЇВСЬКОГО НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ БУДІВНИЦТВА І
АРХІТЕКТУРИ
Циклова комісія інформаційних технологій
КУРСОВА РОБОТА
з дисципліни " Конструювання програмного забезпечення"
на тему " Розробка багаторівневої 2D гри-платформера «Knight Guardian»"
Виконав студент ОКР "Молодший спеціаліст"
спеціальності 121 "Інженерія
програмного забезпечення"
денної форми навчання групи П43
Прутенко Владислав Сергійович
Керівник курсової роботи
Кравець Іван Вікторович
Склад комісії захисту курсової роботи:
Голова комісії
__________
Л.А. Білогор
Члени комісії
__________
М.В. Герасимчук
__________
І.В. Кравець
Оцінка виконання та захисту роботи ______________
м. Житомир – 2021 рік
1

2.

Міністерство освіти і науки України
Відокремлений структурний підрозділ
Житомирський технологічний фаховий коледж
Київського національного університету будівництва і архітектури
Відділення інформаційних технологій
Циклова комісія інформаційних технологій
Освітньо-кваліфікаційний рівень – молодший спеціаліст
Галузь знань 12 "Інформаційні технології"
Спеціальність 121 "Інженерія програмного забезпечення"
ЗАТВЕРДЖУЮ
Голова циклової комісії
________ К.О. Журавська
"____" ________ 2021 року
З А В Д А Н Н Я
НА КУРСОВУ РОБОТУ СТУДЕНТУ
Прутенку Владиславу Сергійовичу
1. Тема " Розробка багаторівневої 2D гри-платформера «Knight Guardian»"
керівник проекту Кравець І.В. - спеціаліст
2. Дата захисту курсової роботи "13" грудня 2021 року
3. Вихідні дані до проекту: редактор коду Visual Studio Code.
4. Зміст пояснювальної записки
4.1. Вступ
4.2. Розділ 1. Аналіз проблематики, методів та засобів вирішення
4.3. Розділ 2. Проектування та розробка сайту
4.4. Розділ 3. Опис роботи із сайтом та його тестування
Висновки
Перелік літературних джерел
5. Дата видачі завдання "8" вересня 2021 р.
2

3.

КАЛЕНДАРНИЙ ПЛАН

з/п
1
2
3
4
5
6
Назва етапів
курсової роботи
П. 4.1
П. 4.2
П. 4.3
П. 4.4
Висновки.
Перелік посилань.
Всього
Строк виконання
етапів роботи
18.09.2021 р.
07.10.2021 р.
23.10.2021 р.
05.11.2021 р.
19.11.2021 р.
02.12.2021 р.
% виконання
5
10
30
25
10
5
100
Студент _________ В. С. Прутенко
Керівник роботи ___________ І.В. Кравець
3

4.


з/п
П.І.Б.
19
Прутенко Владислав Сергійович
Шифр
для заповнення штампів
пояснювальної записки
курсової роботи
121.12.62.481.20-ПЗ
4

5.

ЗМIСТ
ВСТУП .................................................................................................................. 6
1. АНАЛІЗ ПРОБЛЕМАТИКИ, МЕТОДІВ ТА ЗАСОБІВ ВИРІШЕННЯ
ЗАДАЧІ ............................................................................................................... 10
1.1 Аналіз задачі, засобів та методів її вирішення ........................................... 10
1.2 Аналіз існуючого програмного забезпечення за тематикою курсової роботи
............................................................................................................................. 12
1.3 Технічне завдання на курсову роботу ......................................................... 19
2. ПРОЕКТУВАННЯ ТА РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ .. 21
2.1 Проектування загального алгоритму роботи програми ............................. 21
2.2 Розробка функціональних алгоритмів роботи програми ........................... 22
2.3 Розробка програмного забезпечення ........................................................... 23
2.3.1 Розробка інтерфейсу програми ................................................................. 23
2.3.2 Розробка функціональної частини ............................................................ 24
3. ОПИС РОБОТИ З ПРОГРАМНИМ ДОДАТКОМ ТА ЙОГО ТЕСТУВАННЯ
............................................................................................................................. 27
3.1 Опис роботи з програмним додатком ......................................................... 27
3.2 Тестування роботи 2D гри ........................................................................... 29
ВИСНОВКИ ....................................................................................................... 31
ДОДАТКИ .......................................................................................................... 35
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Розроб.
Прутенко В.С.
Перевір.
Кравець. І.В.
Реценз.
Н. Контр.
Затверд.
Підпис Дата
Розробка багаторівневої
2D гри-платформера
«Knight Guardian»
Літ.
Арк.
Аркушів
5
46
ЖТФК КНУБА, гр. П43

6.

ВСТУП
У цьому столітті комп’ютернії технології розвиваються дуже швидко. Усі
галузі суспільства використовують комп’ютеризацію дуже широко: починаючи
від економіки, військових розробок, енергозберігаючих технологій до розробок
ігрових програм, які дають поштовх для подальшого розвитку людства.
Індустрія комп'ютерних ігор з'явилася відносно недавно 30 років тому, але
вже змогла розвинутися у величезну галузь із колосальними доходами у кілька
мільярдів доларів на рік. Зрозуміти подібне раптове зростання популярності
віртуальних розваг дуже просто: все це завдяки широкому поширенню
комп'ютерних технологій, у тому числі появі мережі Інтернет. Завдяки цьому, на
відміну від інших видів розваг, ігри більш доступні для кінцевого користувача.
Для того щоб просто пограти, гравцеві потрібно мати тільки комп'ютер або
ігрову приставку та копію самої гри, а з широким розповсюдженням мережі
Інтернет, для отримання копії гри не потрібно виходити з дому. Більш того,
споживачеві не потрібно мати особливих знань для того, щоб вибрати підходящу
йому гру, тоді як більшість інших видів розваг необхідно розбиратися як мінімум
у необхідному екіпіруванні.
Ігри - важлива частина нашого соціального та психічного розвитку.
Найчастіше ігри поширені серед підлітків та дітей, які розвивають моторику,
кмітливість і логіку. Комп’ютерні ігри потрібно розглядати як своєрідний
соціально-психологічний
феномен.
Поява
персональних комп’ютерів
із
покращеними графічними системами спричинила вибух в ігровому програмному
забезпеченні. Гравці змогли зануритися у віртуальні світи, наповнені
приголомшливою графікою.
Учені все ще сперечаються, що ігри впливають на когнітивні функції,
мотивацію та віддаляють гравців від «реального» світу. Навчання, яке є цікавим,
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
6

7.

виявляється більш ефективним для учнів та студентів. Ігри повинні сприяти
навчальній практиці та навчанню взагалі.
Здається, існує тісний зв'язок між грою та навчанням. Комп'ютерні ігри
посилили навчання за допомогою візуалізації, експериментів та творчості гри. З
досвіду відомо, що в розвинутих країнах Заходу в процесі розвитку мислення та
формування особистості приймає участь не тільки освітній фактор, але й ігрова
діяльність. Під час якої, дитина краще сприймає і засвоює знання, які подаються
в ігровій формі.
Ігри заміняють не тільки реальні предмети, але й дають можливіcть гравцю
виконувати відповідну роль, яка пов’язана з виконанням обов’язків, покладених
на неї, і відношення до інших учасників гри. Крім того, багато проблем,
представлених в іграх, вимагають маніпулювання предметами чи елементами в
цих дослідницьких середовищах і можуть бути залучені у формуванні цілей та
конкуренції. Досвід у сюжетно-рольових іграх лягає в основу особливої
властивості мислення, що дозволяє передбачати майбутню поведінку людей і,
залежно від цього, будувати власну поведінку.
Одним із популярних технологій у розробці ігор є технології, основою
яких є мова програмування C#. Такі технології дозволяють реалізувати широкий
спектр завдань. Головною перевагою є простота використання в поєднанні з
доступністю й варіативністю можливостей.
Кожна гра має свою фізику, властивості простору і перебіг часу. Гра
виконує розважальну роль для користувача, а для виробника є необхідністю
використання новітніх досягнень у галузі техніки, графіки, програмування
складних рухів та спеціальних ефектів.
У процесі гри формуються навички системного аналізу, гравцеві необхідно
швидко і правильно опрацьовувати інформацію, а потім, на її основі,
прогнозувати розвиток подій.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
7

8.

Дана курсова робота орієнтована на розробку ігрової програми «Knight
Guardian» - 2D платформера із трьох рівнів.
Платформер (від англ. Platformer), також відомий як платформна гра (від
англ. Platform game) - жанр відеоігор, ігровий процес в якому складається зі
стрибків персонажа по різноманітних платформах та через перешкоди, збирання
предметів, звичайно необхідних для завершення рівня.
В платформерах гравець керує персонажем, який рухається рухомими чи
нерухомими
платформами
різної
висоти.
У
традиційних
двомірних
платформерах персонаж рухається зліва направо, деякі ігри дозволяють рухатися
в будь-якому напрямку (зазвичай це загадки). Інколи рух можливий тільки
вперед і не залежить від бажання гравця (автоскроллінг). Цей елемент рідко
зустрічається у всій грі, найчастіше в окремих епізодах, де персонаж, наприклад,
повинен тікати від небезпеки. Деякі предмети, звані пауер-апами (від англ.
power-up), наділяють керованого гравцем персонажа додатковими корисними
характеристиками, яка як правило вичерпується з часом (наприклад: силове поле,
прискорення, збільшення висоти стрибків). Колекційні предмети, зброя і пауерапи збираються зазвичай простим дотиком персонажа і для застосування не
вимагають виконання спеціальних дій з боку гравця. Рідше предмети збираються
в «інвентар» героя і застосовуються спеціальною командою (така поведінка
більш характерна для аркадних головоломок).
Метою курсової роботи слугує розробка 2D платформера «Knight
Guardian», а саме написання правильного коду, який керує всім функціоналом
гри. Сам функціонал складається з фото- та аудіоматеріалів, подій, графіки та
алгоритмів дій різних варіантів платформера.
До засобів розробки в першу чергу відносять програмний код та ігровий
двигун. Від їхнього грамотного вибору залежить як швидкість самої розробки,
так і працездатність самого продукту надалі. Програмний код насамперед
залежить від платформи, на яку буде створюватися комп'ютерна гра. Наприклад,
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
8

9.

якщо гра створюється для браузерів, то логічно буде використання мови Java або
Flash, але якщо гра створюється для персонального комп'ютера, оптимальним
вибором буде, наприклад, мова програмування C#.
Ігровий двигун відповідає за низькорівневий опис фізики об'єктів, правил
рендерингу графіки та ін. При виборі ігрового двигуна першою справою
дивляться на його доступність і зроблений вибір мови програмування.
Наприклад, ігровий двигун Unity дозволяє розробляти ігри на мовою C# і він є
безкоштовним, якщо середній дохід кампанії не перевищує 100.000$ на рік.
Завданням роботи є написання повноцінної ігрової програми «Knight
Guardian», яка складається з головного меню, системи спроб та трьома рівнями:
Level 1, Level 2, Level 3.
Загалом, до основних завдань курсової роботи відносяться:
Аналіз ігрової програми «Knight Guardian».
Дослідження існуючих рішень і підходів.
Вивчення підходів до аналізу написання алгоритмів для гри.
Постановка прикладної задачі, яка б надала можливість для детального
дослідження.
Безпосереднє використання засобів дослідження до поставленої задачі.
Аналіз результатів, оцінка використаних та досліджених підходів,
визначення переваг і недоліків створеного рішення.
Об’єктом дослідження курсової роботи,
вивчення якого становить
практичний інтерес, постає 2D платформер «Knight Guardian», а саме логічні дії
головного персонажа в межах трьох рівнів.
Предметом дослідження є аналіз програмного коду «Knight Guardian»,
який поєднує всі функції гри в одне ціле.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
9

10.

1. АНАЛІЗ ПРОБЛЕМАТИКИ, МЕТОДІВ ТА ЗАСОБІВ
ВИРІШЕННЯ ЗАДАЧІ
1.1 Аналіз задачі, засобів та методів її вирішення
Задана гра «Knight Guardian» – це 2D платформер із трьох рівнів. Кожен
рівень має різні карти місцевості, що ускладнює проходження гри, зі зростанням
рівня складності кожного рівня. Для створення такої ігрової програми підійдуть
два гральних рушія: Unity Engine та Unreal Engine, які задовольняють заданим
вимогам.
Unity - це міжплатформенний ігровий рушій, розроблений Unity
Technologies, вперше оголошений та випущений у червні 2005 року. Станом на
2018 рік, двигун був розширений для підтримки понад 25 платформ. Двигун
може бути використаний для створення тривимірних, двовимірних, віртуальної
реальності та ігор з доповненою реальністю, а також для моделювання. Рушій
був прийнятий у галузях, що не входять до відеоігор, таких як кіно,
автомобілебудування, архітектура, інженерія та будівництво.
Unreal Engine - це ігровий движок, розроблений компанією Epic Games,
вперше продемонстрований у 1998 році. Хоча спочатку розроблений для шутерів
від першої особи, він з успіхом застосовується в багатьох інших жанрах,
включаючи платформи, бойові ігри, MMORPG та інші RPG. Завдяки своєму
коду, написаному на C++, Unreal Engine має високу ступінь портативності і є
інструментом, який сьогодні застосовують багато розробників ігор.
Для виконання курсової роботи було вибрано Unity Engine у якості
ігрового рушія. Головним критерієм відбору була наявність Unity Asset Store інтернет-магазину, де можна завантажити й встановити ігрові ресурси (об’єкти,
аудіо та ін.). Використовуючи Unity Engine, ігрові програми націлені на багато
різних платформ, включаючи мобільні платформи. Unreal Engine, як правило,
використовується лише для ігор на персональні комп’ютери та консолі.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
10

11.

Усі рівні 2D платформера «Knight Guardian» мають мету контролю
головного персонажа в межах ігрового поля, проходження рівня за мінімальну
кілкість спроб. Якщо головний персонаж падає з платформи, або попадає на так
звані шипи, то персонаж потрапляє на початок рівня і кількість спроб
збільшиться на 1. Код дозволяє керувати лицарем за допомогою клавіш напрямку
(вверх, вниз, вліво, вправо) та пробілу для стрибків.
Перший рівень гри відрізняється найлегшою складністю, адже має
неважку карту та небагато перешкод. Із зростанням рівнів, збільшується
складність процесу гри та розширюється карта місцевості. Другий рівень є
помірно складним. Третій вважається найскладнішим рівнем з-поміж усіх, адже
він має найбільшу ігрову карту і відстань між островами значно більше ніж у
попередніх рівнях.
Для виконання поставленої задачі для курсової роботи, найкращим
варіантом є використання можливостей мови програмування C#.
C# - це об'єктно-орієнтована мова програмування, що дозволяє реалізувати
широкий спектр завдань. Основною перевагою є простота використання в
поєднанні з доступністю і великим спектром різноманітних можливостей.
Для даного проєкту знадобиться створення трьох різних ігрових сцен, у
яких будуть розташовуватися усі рівні відповідно. Кожна сцена має ігрового
персонажа, декоративні елементи у вигляді фону місцевості та рослин-шипів,
можливості зупинити гру, тобто поставити рівень на паузу, текст виводу
результатів гри.
Для того, щоб отримати можливість управління лицарем за допомогою
клавіатури, застосуємо функцію отримання стану клавіш і скористаємося
константами для потрібних клавіш.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
11

12.

1.2 Аналіз існуючого програмного забезпечення за тематикою курсової
роботи
«Knight Guardian» – це 2D платформер, який має усі характеристики
відповідно до даного сімейства ігор.
Платформер (від англ «platformer») – жанр відеоігор, ігровий процес в
якому складається із стрибків персонажа по різноманітним платформах та
оминання перешкод, збирання предметів, необхідних для завершення рівня.
На початку 80-х років з’явилися перші консолі, так як вони були дуже
слабкими, ігри були обмежені одним екраном. Найпершою грою у жанрі
платформер стала гра «Space Panic», яка спочатку виходила на аркадних
автоматах, а потім перенесена на ColecoVision. Клони цієї гри також виходили
на різних системах.
Рисунок 1.1 – Типовий ігровий процес платформера «Space Panic», 1980 р.
Продажі «Space Panic» провалились. Журнал Electronic Games у 1983 році
зв’язав це із неготовністю аудиторії до новизни концепції. Тому що «Space Panic»
стала не тільки першою грою, у якій головний персонаж має застосовувати
навички альпініста, але й першою грою, у якій потрібно копати ями.
Недосвідченому гравцю досить важко відразу адаптуватися до такої кількості
оновлень в ігровому процесі. Середня тривалість гри становить 30 секунд.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
12

13.

Концепція стала успішною у неофіційній версії «Apple Panic» та «Lode Runner»,
який має аналогічний вид збоку і необхідність копати пастки для відсіювання
ворогів. Пізніше, Universal запозичили багато відмінних рис для своєї гри «Mr.
Do’s Castle» (1983).
«Space Panic» є прабатьком ігри «Donkey Kong» від Nintendo, яку часто
згадують як родоначальником усіх платформерів. «Donkey Kong»
- це
комп’ютерна гра для аркадних автоматів, яка була розроблена компанією
Nintendo і випущеної у 1981 році. Пізніше з’явились порти для багатьох
домашніх комп’ютерів та ігрових приставок.
Головним персонажем у платформері «Donkey Kong» є персонаж на ім’я
Стрибун (англ. Jumpman), тесляр який має врятувати свою наречену від лиходія,
роль якого відіграє віслюк. Гра має три прямих продовження – «Donkey Kong
Jr.», «Donkey Kong 3» і «Donkey Kong '94» для Game Boy. Останню можна також
розглядати як ремейк, але після чотирьох оригінальних рівнів йдуть понад сто
нових.
Рисунок 1.2 – Ігровий процес платформера «Donkey Kong», 1981 р.
Найбільш популярний платформер – це «Super Mario Bros», який
випустила японська компанія Nintendo у 1985 році. Маріо (або Луїджі)
відправляється в подорож по Грибному Королівству, щоб знайти принцесу Піч,
яку Боузер заточив у своєму замку. Під час подорожі він зустрічає таких ворогів,
як Гумба і Купа Трупа, і після сутечки з Боузер в перших семи замках знаходить
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
13

14.

Тоад, який підказує, що Піч заточена в іншому замку. Після того як Маріо
знаходить принцесу гра закінчується.
Мета гри – пройти через Грибне Королівство, уникаючи або знищуючи
солдатів черепашачого Короля Купи і врятувати захоплену ними у полон
принцесу.
Серед бонусів може зустрітися помаранчевий гриб, взявши який, персонаж
збільшується в розмірах, перетворюючись в Супер Маріо (англ. Super Mario).
Якщо Супер Маріо або Вогненний Маріо доторкаються до супротивника, то вони
повертаються в стадію звичайного Маріо. Якщо ж противник ранить Маріо або
закінчується час, виділений для проходження рівня, то гравець втрачає одну
«життя» і гра починається заново (або з початку рівня, або з його середини). У
рівнях, які розташовані в замках, загиблий Маріо починає гру завжди з початку
рівня.
Рисунок 1.3 – Ігровий процес платформера «Super Mario Bros», 1985 р.
Limbo — це 2D платформер, побудований на основі фізики рушія Box2D,
що відповідає за керування об'єктами навколишнього середовища та ігровим
персонажем. Гравець керує неназваним хлопчиком, бачачи світ збоку. Він має
спрямовувати його крізь небезпечне середовище та пастки в пошуках сестри.
Дозволяється рух вправо і вліво, стрибки і взаємодія з об'єктами. В разі загибелі
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
14

15.

персонаж опиняється на початку глави, яких всього є 39 (40 разом із секретною).
Розробниками було побудовано такий дизайн головоломок, за яким хлопчик
неодмінно буде помирати перед тим, як знайде розгадку. Playdead назвали такий
стиль гри стилем «спроб та смертей» та використовують образи жахливої смерті
хлопчика у разі невдачі, аби підштовхнути гравця до правильного шляху.
Пройдені раніше глави можна пройти заново. На деяких сховані секрети у
вигляді білих яєць. Знайшовши їх, гравець отримає значки досягнень.
Головоломки передбачають переміщення ящиків, блоків, натискання
кнопок, що запускають механізми і керують силою тяжіння. Повсюдно хлопчика
чекають пастки: прірви, водойми, капкани, циркулярні пили і шипи, а також
хижаки та інші діти, які намагаються вбити хлопчика особисто чи заманити в
пастку.
Рисунок 1.4 – Ігровий процес платформера «Limbo», 2010 р.
«Sonic Mania» – відеогра серії Sonic the Hedgehog у жанрі платформер,
розроблений Кристіаном Уайтхедером і студіями Headcannon і PagodaWest
Games, випущеної компанією Sega.
За сюжетом їжак Соник, лисиць Тейлз і єхидна Наклз виявили на острові
ангелів потужне джерело енергії - Рубін Ілюзій, який дозволяє контролювати час
і простір, однак доктор Еггман разом зі своїми роботами Hard Boiled Heavies
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
15

16.

дісталися до нього першими, щоб використовувати камінь з метою захоплення
світу. Герої збираються запобігти підступним планам лиходіїв. Гравцеві
належить проходити різні рівні, серед яких є як старі зони з перших частин серії,
так і зовсім нові. Серед ігрових персонажів доступні Соник, Тейлз і Наклз, кожен
з яких володіє своїми унікальними здібностями і особливостями проходження
зон.
Платформер «Sonic Mania» був приурочений до 25-річного ювілею серії
Sonic the Hedgehog. Розробники поставили перед собою мету - відтворити
оригінальний геймплей класичних ігор серії, при цьому додавши нові
можливості і поліпшення. Ігрова преса переважно позитивно оцінила Sonic
Mania. Критикам сподобалася захоплююча ігрова механіка, успадкована від
перших частин серії, барвистий дизайн зон і музичний супровід. До недоліків
була віднесена висока складність проходження.
Рисунок 1.5 – Ігровий процес платформера «Sonic Mania», 2017 р.
Стандартний 2D платформер «Cuphead», розроблений канадською
командою StudioMDHR Entertainment у 2017 році. Керуючи персонажем на ім’я
Капхед, гравець бореться із серією босів, щоб повернути борг. Гра була сильно
замотивована роботами аніматорів 1930-х років, таких як Fleischer Studios Макса
Флейшера, і прагнула зберегти їх сюрреалістичні якості.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
16

17.

Рисунок 1.6 – Ігровий процес платформера «Cuphead», 2017 р.
«Gris» – комп’ютерна гра у жанрі платформера, розроблена іспанською
командою незалежних розробників Nomada Studio і видана Develver Digital. У
«Gris» майже немає тексту - тільки невеликі підказки по управлінню, записані
зрозумілими загальними символами. Гріс - дівчина, зачинившись у власному
світі через біль, що огорнула її в реальності. Проте одного разу, статуя, на якій
героїня розташовувалася, зруйнувалася, змушуючи Гріс впасти на безбарвну
землю. Вивчивши область навколо, дівчина виявляє дивні структури, які
приходять в дію разом з активацією особливих вогнів, які Гріс повинна збирати.
Зібравши їх достатню кількість, героїня може отримувати доступ до прихованих
проходах у вигляді сузір'їв, які активуються вогнями. Також вони необхідні, щоб
активувати особливі стели, що дарують Гріс по одній новій здібності. На самому
початку дівчина може тільки бігати і підстрибувати, пізніше, вона отримує
здатність набувати форму важкого куба, пурхати і злітати при наявності
червоних метеликів, або ж плавати під водою.
Рисунок 1.7 – Ігровий процес платформера «Gris», 2018 р.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
17

18.

Deadlight – це гра в жанрі платформер з елементами survival horror,
розроблена іспанською студією Tequila Works для Xbox 360 та Microsoft
Windows та випущена в сервісах Xbox Live Arcade та Steam. Починаючи з 1986
року в Сіетлі гра розповідає про Рендаля Вейна - колишнього охоронця парку,
який твердо має намір знайти свою сім'ю в період зомбі-апокаліпсису, що
почався. Гра несе концепції колишніх новинок 80-х та початку 90-х років, таких
як: Prince Of Persia, Another World та Flashback.
Deadlight є 2.5D грою, де персонаж може рухатися тільки ліворуч праворуч, або праворуч - ліворуч. Він може виходити межі тієї чи іншої
середовища, пересуватися лише «вперед». Гра складається з головоломок, які
повинен вирішувати гравець, щоб уникнути тіней. Так головний герой називає
повсталих мерців. Атакувати всіх - не найкраща витівка, тому потрібно уникати
зомбі. Якщо ж бій неминучий, то атака проходить з використанням холодної
(пожежної сокири) і вогнепальної зброї (починаючи з револьвера, закінчуючи
дробовиком).
Вогнепальна зброя дуже корисна проти великого натовпу, але боєзапас
обмежений. Постійні атаки холодною зброєю втомлюють персонажа, що знижує
його ефективність у бою, аж до виснаження, і неможливості атакувати будь-кого.
Є й особлива зброя – рогатка, призначена для вирішення головоломок. Ситуації,
коли гравець дійсно змушений боротися рідко, тому увага акцентується на
уникненні «тіней».
Рисунок 1.8 – Ігровий процес платформера «Deadlight», 2012 р.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
18

19.

Із сучасних ігор-платформерів популярними є: «Super Meat Boy», «Rayman
Origins/Legends», «Cuphead», «Gris», «Broforce», «Ori And The Blind Forest»,
«Sonic Mania», «Limbo», «Trine», «Shovel Knight», «Hollow Knight» та інші.
1.3 Технічне завдання на курсову роботу
Підстава для розробки: підставою для розробки курсової роботи є завдання
на курсову роботу.
Призначення розробки: програма призначена для індивідуальної гри
користувача, візуалізація представлена у вигляді 2D гри.
Вимоги до програмного засобу: програма повинна проводити ігровий
процес, надавати доступ до налаштувань (гучності звуку, розширення екрану,
обрання повноекранного режиму, або вихід із нього), рахувати кількість смертей
у процесі гри.
Програма повинна виконувати наступні функції:
Повинна бути наявна можливість виведення на екран результатів гри
користувача у кількості спроб витрачених на проходження рівня.
Повинна бути наявна можливість відключення/включення гучності звуку.
Повинна бути наявна можливість виведення інформації про гру, праивла
гри, дані про автора.
Повинна бути наявна можливість зберігання найбільших набраних спроб
із кожного рівня.
Ігрове поле має бути з чітко окреслене. Головний персонаж повинен
візуально відрізнятись від ігрових деталей. Усі шрифти, які використовуються в
програмі повинні бути чіткими, легкими для прочитання та з правильно
підібраним розміром.
Програма повинна забезпечити користувача швидкою взаємодією з
клавіатурою.
Програма повинна адекватно реагувати на будь-які дії користувача.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
19

20.

Вимоги до надійності: програма заздалегідь ознайомлена із ситуаціями
некоректних дій із сторони користувача при використанні продукту. Програма
повинна працювати в одно користувацькому режимі у всіх трьох рівнях
платформера.
Вимоги до складу і параметрів технічних засобів:
Процесор — 1 Гц і вище
Оперативна пам'ять — 1024 і вище
Вільне місце на диску — 182 Мб
Клавіатура
Монітор
Мишка або тачпад
Вимоги до вхідних даних: відсутні.
Вимоги до інтерфейсу: інтерфейс повинен бути вміру стриманим..
Повернення до головного меню повинно бути доступним із усіх точок програми.
Вимоги до інформаційної і програмної сумісності: продукт повинен
працювати під керуванням Windows 7 і вище. Повинен бути встановлений .Net
Framework 4.5 і вище. Спеціальні вимоги для ігрової програми відсутні.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
20

21.

2. ПРОЕКТУВАННЯ ТА РОЗРОБКА ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
2.1 Проектування загального алгоритму роботи програми
Після отримання достатнього об’єму теоретичної інформації відносно
потрібного 2D платформера у першому розділі, нам необхідно перейти до етапу
проектування програмного забезпечення. Потрібно скласти загальний алгоритм
роботи програми, що надасть можливість оцінити алгоритм роботи гри
користувачем.
Після запуску платформера завантажується головне меню й вмикається
відповідний
аудіосупровід.
Після
натискання
кнопки
початку
гри,
завантажується перший рівень. Гра готова до прийняття команд користувача.
У головному меню користувач може виконати наступні дії:
Почати гру
Відключити/включити гучність аудіосупроводу
У кожному рівні платформера користувач може:
Зупинити гру на паузу
Повернутися до головного меню
У меню паузи користувач може:
Продовжити гру
Повернутися до головного меню
Відключити/включити гучність аудіосупроводу
Вийти з гри
Після завершення кожного рівня користувач може:
Перейти до наступного рівня
Повернутися до головного меню
Відключити/включити гучність аудіосупроводу
Вийти з гри
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
21

22.

2.2 Розробка функціональних алгоритмів роботи програми
Поняття алгоритму - одне з основних у програмуванні. Алгоритм - це
послідовність команд, в результаті виконання якої він повинен вирішити
поставлену задачу. Алгоритм повинен описуватися на формальній мові, яка
виключає неоднозначність тлумачення.
Запис алгоритму на формальній мові називається програмою. Іноді саме
поняття алгоритму ототожнюється з його записом, так що слова «алгоритм» і
«програма» - майже синоніми. Невелике розходження полягає в тому, що під
алгоритмом, як правило, розуміють основну ідею його побудови. Програма ж
завжди пов'язана із записом алгоритму на конкретній формальній мові.
Загальний алгоритм меню 2D платформера «Knight Guardian», який є
основою курсової роботи, зображений у вигляді блок-схеми на рисунку 2.1.
Після запуску гри вмикається аудіосупровід та ведеться постійний аналіз дій
користувача.
При
натисненні
кнопки
«Mute»
відбудеться
відключення/включення гучності аудіосупроводу.
Рисунок 2.1 – Загальний алгоритм роботи меню платформера
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
22

23.

2.3 Розробка програмного забезпечення
Після завершення проектування 2D гри «Knight Guardian» можна почати
розробку програмного забезпечення. Минулий етап, на якому виконувалось
проектування загальних принципів роботи, дало можливість для планування
окремих скриптів, які названі відповідно до їх функціональної можливості.
Кожен скрипт у грі має свої окремі класи. Перш за все був створений скрипт,
який відповідає за функціональність головного меню. Далі, відповідно до рівнів,
були створені нові скрипти. Влучно підібрана назва файлу з кодом дозволила не
плутатись у великій кількості файлів із розширенням «.cs».
Загальний вигляд папки Assets, де зберігаються всі файли для гри
зображений на рисунку 2.2.
Рисунок 2.2 – Вигляд папки «Assets» в програмі Unity
2.3.1 Розробка інтерфейсу програми
Інтерфейс ігрової програми – це один із важливих аспектів самого додатку.
Він є засобом зручної взаємодії користувача з комп’ютером. За означенням,
інтерфейс – це сукупність засобів і правил що забезпечують легке та комфортне
використання програми.
Кольорова гама інтерфейсу дотримана у спокійних тонах. Найчастіше
використані фіолетовий, білий та оранжевий кольори. Приклад головного меню
наведений на рисунку 2.3.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
23

24.

Рисунок 2.3 – Головне меню 2D гри «Knight Guardian»
У 2D платформері, який був заданий на курсову роботу будуть
використовуватися різні ігрові. Проміжні оголошення будуть викликатися при
закінченні рівня, та при закінченні гри.
2.3.2 Розробка функціональної частини
Ігрова програма «Knight Guardian» налічує 12 папок, у яких взагальному
нараховується 12 скриптів. Вигляд скриптів зображений на рисунку 2.4.
Рисунок 2.4 – Вигляд папки «Scripts» в програмі Unity
Для різних аспектів виділена своя папка для легкого й швидкого доступу
до потрібних елементів.
Аудіофайли розташовані у папці «Audio» і показані на рисунку 2.5.
Рисунок 2.5 – Вигляд папки «Audio» в програмі Unity
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
24

25.

Функціональні файли шрифтів папки «Fonts», подані на рисунку 2.6.
Рисунок 2.6 – Вигляд папки «Fonts» в програмі Unity
Файли, розташовані у папці «Scenes» зображені на рисунку 2.8.
Рисунок 2.8 – Вигляд папки «Scenes» в програмі Unity
Усі зображення кнопок знаходяться у папці «Buttons», яка зображена на
рисунку 2.9
Рисунок 2.9 – Вигляд папки «Buttons» в програмі Unity
Усі зображення фінішного флагу та його анімації знаходяться у папці
«square_flag», яка зображена на рисунку 2.10
Рисунок 2.10 – Вигляд папки «square_flag» в програмі Unity
Усі зображення персонажу та його анімації знаходяться у папці «Char», яка
зображена на рисунку 2.11
Рисунок 2.11 – Вигляд папки «Char» в програмі Unity
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
25

26.

Усі зображення шипів, які ускладнюють проходження рівня персонажем,
знаходяться у папці «Spikes», яка зображена на рисунку 2.12.
Рисунок 2.12 – Вигляд папки «Spikes» в програмі Unity
Алгоритм для усіх рівнів 2D платформера «Knight Guardian» зображений
на рисунку 2.13. Першим кроком алгоритму є постійне переміщення лицара та
аналіз координат. Якщо головний персонаж потрапить у пастку, персонаж
переміститься на початок рівня і добавиться одна спроба до лічильника. Якщо
лицар оминув всі перешкоди та потрапив на фінішну зону, то рівень вважається
пройденим.
Рисунок 2.13 – Алгоритм для рівнів гри «Knight Guardian»
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
26

27.

3. ОПИС РОБОТИ З ПРОГРАМНИМ ДОДАТКОМ ТА ЙОГО
ТЕСТУВАННЯ
3.1 Опис роботи з програмним додатком
Після запуску ігрової програми «Knight Guardian» користувач побачить
головне меню програми, приклад якого було наведено у другому розділі на
рисунку 2.3, та почує головний аудіосупровід гри. Аудіофайли для програми
були найдені в мережі Інтернет.
У головному меню користувач може натиснути на дві кнопки: «Play»,
«Mute».
Натиснувши кнопку «Play», відбудеться початок гри та завантажиться
перший рівень.
Натиснувши кнопку «Mute», гучність аудіосупровіду буде увімкнено або
вимкнено.
Перший рівень є найлегшим у проходжені та має невелику карту
місцевості. Повна карта першого рівня наведена на рисунку 3.3.
Рисунок 3.3 – Повна карта місцевості Level 1 в Unity
Другий рівень відноситься до середньої важкості, має більш розширену
карту місцевості ніж Level 1. Повна карта другого рівня наведена на рисунку 3.4.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
27

28.

Рисунок 3.4 – Повна карта місцевості Level 2 в Unity
Останній третій рівень має високий рівень складності проходження,
присутня найбільша карта місцевості та перед фінішом присутня табличкаобманка. Повна карта третього рівня наведена на рисунку 3.5.
Рисунок 3.5 – Повна карта місцевості Level 3 в Unity
При завантаженні кожного рівня можна побачити анімацію головного
персонажа.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
28

29.

Рисунок 3.6 – Завантажений рівень гри
Якщо персонаж потрапив напрапив на перешкоди або впав з острівця, то
герой переміщується на початок рівня, а кількість спроб збільшується на 1, це
показано на рисунку 3.7.
Рисунок 3.7 – Збільшення кількості спроб після невдачі
3.2 Тестування роботи 2D гри
Тестування 2D гри «Knight Guardian» проводилось для виявлення усіх
недоліків й контролю за адаптивністю гри на різних розширеннях моніторів.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
29

30.

Ігрову програму було перевірено багато раз й виявлено декілька недоліків, які
були швидко виправлені.
Рисунок 3.10 – Правильний підрахунок кількості витрачених спроб
Рисунок 3.11 – Правильне відображення вікна фінішу післе завершення
другого рівня з витрачених спроб
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
30

31.

ВИСНОВКИ
У результаті виконання курсової роботи була вивчена популярна галузь
програмування – розробка ігрових програм. У процесі роботи були необхідними
знання мови програмування на мові C#, об'єктно-орієнтоване програмування,
основи грального рушія Unity Engine у розробці 2D платформерів, правильне
проектування ігрового процесу, анімації, фізики й багато іншого.
У першому розділі було проаналізовано поставлену задачу й методи її
вирішення. До кожного з рівнів 2D платформера «Knight Guardian» було
розроблено ігрову мапу й розібрано загальні аспекти розробки. Також був
вибраний гральний рушій, у якому надалі проводилась робота над грою «Knight
Guardian».
Ним
виявився
Unity
Engine
-
один
з
найпотужніших
і
найпопулярніших двигунів на сьогодні.
Наступний розділ курсової роботи відповідав за проектування та розробку
програмного забезпечення. Спочатку було покроково розписано план дій для
кожного з рівнів платформера: для головного меню, системи спроб та рівнів
«Level 1», «Level 2» і рівня «Level 3». Згодом було написано загальні теоретичні
відомості про поняття алгоритму та був складений повний алгоритм роботи
ігрової програми у вигляді блок-схеми. На базі вже складеного алгоритму були
складені інші, допоміжні алгоритми також у вигляді блок-схем.
У третьому розділі була покроково описана робота з програмним
додатком:
логічна
послідовність
дій
користувача
при
повноцінному
використанні програми, можливі варіації та нюанси. Вкінці було проведене
тестування «Knight Guardian.
Розробка відносно неважкого 2D платформера «Knight Guardian» зайняла
два місяці роботи. На перший погляд, великих проблем не могло виникнути, але
під час написання коду було використано багато додаткової літератури для
правильного налагодження ігрової програми.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
31

32.

Для вдосконалення дизайну були задіяні можливості програми Adobe
Photoshop. Використовуючи її, було підвищено деталізованість і баланс
кольорової гами.
Ігрова програма «Knight Guardian»
була протестована не тільки її
розробником, також були задіяні друзі з коледжу для виявлення можливих
недоліків.
Розробка ігрової програми «Knight Guardian» дала імпульс та інтерес у
вивченні технологій розробки ігор у подальшому навчанні.
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
32

33.

СПИСОК ЛІТЕРАТУРНИХ ДЖЕРЕЛ
1. C# 4.0 и платформа .NET 4 для профессионалов - Кристиан Нейгел Диалектика, Вильямс, 2011 - 1440 стр.
2. Unity и C#. Геймдев от идеи до реализации. - Бонд Джереми Гибсон - Питер,
2019 - 928 стр.
3. C Sharp [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/C_Sharp
4. Платформер [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/Платформер
5. Unity (рушій гри) [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/Unity_(%D1%80%D1%83%D1%88%D1%96%D0%B9
_%D0%B3%D1%80%D0%B8)
6. Unreal Engine [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/Unreal_Engine
7. Алгоритм [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0
%B8%D1%82%D0%BC
8. Space Panic [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Space_Panic
9.
Donkey Kong [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Donkey_Kong
10. Super Mario Bros [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Super_Mario_Bros
11. Limbo [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://uk.wikipedia.org/wiki/Limbo_(%D0%B2%D1%96%D0%B4%D0%B5%D0%
BE%D0%B3%D1%80%D0%B0)
12. Sonic Mania [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Sonic_Mania
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
33

34.

13. Cuphead [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Cuphead
14. Gris
[Електронний
ресурс]
/
Вікіпедія,
2021
Режим
-
доступу:
https://ru.wikipedia.org/wiki/Gris_(игра)
15. Deadlight [Електронний ресурс] / Вікіпедія, 2021 - Режим доступу:
https://ru.wikipedia.org/wiki/Deadlight
16. How To Make 2D Platformers (Unity Fundamentals Tutorial) [Електронний
ресурс]
/
Thomas
Brush
-
2019
-
Режим
доступу:
https://www.youtube.com/watch?v=2MImqNvgrNg
17. Easy 2D Tilemap Collisions | Unity 2018 Tutorial [Електронний ресурс] / Chris'
Tutorials
-
2018
Режим
-
доступу:
https://www.youtube.com/watch?v=VDdKv0DgY5I
18. 2D Animation in Unity (Tutorial) [Електронний ресурс] / Brackeys - 2018 Режим
доступу:
https://www.youtube.com/watch?v=hkaysu1Z-N8
19. 2D Movement in Unity (Tutorial) [Електронний ресурс] / Brackeys - 2018 Режим
доступу
:
https://www.youtube.com/watch?v=dwcT-Dch0bA
20. 2D Camera in Unity (Cinemachine Tutorial) [Електронний ресурс] / Brackeys 2018
-
Режим
доступу:
https://www.youtube.com/watch?v=2jTY11Am0Ig
Арк.
121.12.62.481.20-ПЗ
Змн.
Арк.
№ докум.
Підпис
Дата
34

35.

ДОДАТКИ
35

36.

Додаток A
Файл «StartGame.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.’SceneManagement;
public class StartGame : MonoBehaviour
{
public void Play()
{
SceneManager.LoadScene("Level_1");
}
}
Файл «AnimationChange.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationChange : MonoBehaviour
{
private Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow) ||
Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
{
if(Time.timeScale != 0f)
{
anim.SetBool("isRunning", true);
}
}
36

37.

else
{
if (Time.timeScale != 0f)
{
anim.SetBool("isRunning", false);
}
}
if
(Input.GetKey(KeyCode.Space)
||
Input.GetKey(KeyCode.UpArrow)
||
Input.GetKey(KeyCode.W))
{
if (Time.timeScale != 0f)
{
anim.SetBool("jump", true);
}
}
else
{
if (Time.timeScale != 0f)
{
anim.SetBool("jump", false);
}
}
}
}
Файл «CameraMove.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
public GameObject player;
void Update()
{
transform.position
=
new
Vector3(player.transform.position.x,
player.transform.position.y, -10f);
}
37

38.

}
Файл «Death.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Death : MonoBehaviour
{
public Text tries;
public int triesCounter;
void Start()
{
tries.text = "Спроб: " + triesCounter;
}
void Update()
{
tries.text = "Спроб: " + triesCounter;
}
}
Файл «DeathByFall.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class DeathByFall: MonoBehaviour
{
public static DeathByFall instance;
public float height;
public GameObject respawn;
public GameObject player;
public GameObject playerCheck;
public Death counter;
38

39.

private void Awake()
{
instance = this;
}
void Start()
{
}
private void Update()
{
if (player.transform.position.y < height)
{
player.transform.position = respawn.transform.position;
AddTries();
}
}
public void AddTries()
{
counter.triesCounter++;
}
}
Файл «DeathBySpikes.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DeathBySpikes : MonoBehaviour
{
public GameObject respawn;
public GameObject player;
public Death counter;
39

40.

public void Start()
{
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
other.transform.position = respawn.transform.position;
AddTries();
}
}
public void AddTries()
{
counter.triesCounter++;
}
}
Файл «EndGame.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class EndGame : MonoBehaviour
{
public GameObject EndGameMenuUI;
public GameObject player;
public Text text;
public Death counter;
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
Time.timeScale = 0f;
40

41.

EndGameMenuUI.SetActive(true);
text.text = "Кількість спроб: " + counter.triesCounter;
}
}
public void LoadMenu()
{
Time.timeScale = 1f;
SceneManager.LoadScene("Menu");
}
public void QuitGame()
{
Application.Quit();
}
}
Файл «Movement.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
public float speed;
public float jumpForce;
private float moveInput;
private Rigidbody2D rb;
private bool faceRight = true;
private bool isGrounded = false;
public Transform groundCheck;
public float checkRadius = 0.2f;
public LayerMask whatIsGround;
private int extraJumps;
public int extraJumpsValue;
private void Start()
41

42.

{
extraJumps = extraJumpsValue;
rb = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
isGrounded
=
Physics2D.OverlapCircle(groundCheck.position,
checkRadius,
whatIsGround);
moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
if (faceRight == false && moveInput > 0)
{
Flip();
}
else if (faceRight == true && moveInput < 0)
{
Flip();
}
}
private void Update()
{
isGrounded
=
Physics2D.OverlapCircle(groundCheck.position,
checkRadius,
whatIsGround);
if (isGrounded == true)
{
extraJumps = extraJumpsValue;
}
if
(Input.GetKeyDown(KeyCode.Space)
&&
extraJumps
>
0
||
Input.GetKeyDown(KeyCode.UpArrow) && extraJumps > 0 || Input.GetKeyDown(KeyCode.W) &&
extraJumps > 0)
{
rb.velocity = Vector2.up * jumpForce;
extraJumps--;
}
42

43.

else if (Input.GetKeyDown(KeyCode.Space) && extraJumps == 0 && isGrounded
== true || Input.GetKeyDown(KeyCode.UpArrow) && extraJumps == 0 && isGrounded == true)
{
rb.velocity = Vector2.up * jumpForce;
}
}
void Flip()
{
faceRight = !faceRight;
Vector3 Scaler = transform.localScale;
Scaler.x *= -1;
transform.localScale = Scaler;
}
}
Файл «MusicMute.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MusicMute : MonoBehaviour
{
[SerializeField] private AudioSource audio;
public float volume;
public void Mute()
{
if (this.audio.volume != 0f)
{
this.audio.volume = 0f;
}
else if(this.audio.volume == 0f)
{
this.audio.volume = volume;
}
}
}
Файл «NextLevel.cs» у папці «Scripts»:
43

44.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class NextLevel : MonoBehaviour
{
public GameObject player;
public int Scene;
public GameObject CompletedLevel;
public Text text;
public Death counter;
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
Time.timeScale = 0f;
CompletedLevel.SetActive(true);
text.text += "\nКількість спроб: " + counter.triesCounter;
//SceneManager.LoadScene(Scene);
//Time.timeScale = 0.1f;
}
}
public void ChangeLevel()
{
SceneManager.LoadScene(Scene);
Time.timeScale = 1f;
}
}
Файл «Pause_Menu.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
44

45.

public class Pause_Menu : MonoBehaviour
{
public static bool GameIsPaused = false;
public GameObject pauseMenuUI;
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if(GameIsPaused)
{
Resume();
}
else
{
Pause();
}
}
}
public void Resume()
{
pauseMenuUI.SetActive(false);
Time.timeScale = 1f;
GameIsPaused = false;
}
void Pause()
{
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
GameIsPaused = true;
}
public void LoadMenu()
{
Time.timeScale = 1f;
SceneManager.LoadScene("Menu");
}
45

46.

public void QuitGame()
{
Application.Quit();
}
}
Файл «ScenesChanger.cs» у папці «Scripts»:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ScenesChanger : MonoBehaviour
{
public void ChangeLevel(int sceneNumber)
{
SceneManager.LoadScene(sceneNumber);
}
}
46
English     Русский Правила