SpriteSheet і рівень. Коректний рух персонажу

×

Умовні позначення роздатки

Інструкція до роздатного матеріалу, або як зрозуміти про що тут написано:

📢Зверни увагу: - Після такого значка буде вказано інформацію, на яку варто звернути увагу

☝Запам'ятай: - Після такого значка буде вказано інформацію, на яку варто вивчити

🤔Подумай: - Після такого значка буде вказано інформацію, яку варто обдумати

🔎Цікаво: - Після такого значка буде вказано якийсь цікавий факт

👉Завдання № - Після цього значка буде наведено завдання для виконання.

Примітка 1. - Після такої позначки буде написано додаткову інформацію


Посилання на графіку для проєкту


Словник термінів

Sprite Sheet - Це один великий графічний файл, що містить декілька зображень спрайтів, які можна використовувати в іграх. Він допомагає оптимізувати графіку вашого проєкту.

Prefab - Це шаблон об'єкта, який можна використовувати багато разів у різних місцях вашого проєкту. Префаби є ключовими для зниження часу розробки.

Pixel per Unit - Кількість пікселів, які відповідають одній одиниці у Unity для коректного масштабування спрайтів. Це критично важливо для збереження якості текстури.

Slice - Процес розділення спрайт листа на окремі спрайти для подальшого використання у вигляді функціональних елементів у грі, що допомагає у зборі графіки.


Sprite Sheet / Спрайт лист

☝Запам'ятай:

Sprite sheet / Спрайт лист - може містити в собі 2 і більше спрайтів, з якими можна працювати окремо з кожним. Для роботи з таким спрайтом листом, потрібно вказати Unity те, що такий спрайт складається з окремих частин.


📢Зверни увагу:

Таке об'єднання кількох спрайтів в один файл покращує продуктивності гри. Використання спрайт листів дозволяє зменшити кількість запитів до графічного процесора, що позитивно впливає на FPS.


🔎Цікаво: Відомо, що навіть великі студії, такі як Nintendo, широко використовують спрайт листи у своїх проєктах для оптимізації, оскільки вони знижують навантаження на пам'ять і підвищують продуктивність.


Ділення спрайт листа

Щоб налаштувати спрайт лист, в Unity ви можете імпортувати зображення і змінити Sprite Mode на Multiple в інспекторі. Це дозволить увімкнути режим розрізання.

1. Імпортуємо Sprite sheet (зображення). Тиснемо на нього, та переводимо погляд у вікно Inspector.



2. Виставляємо властивість зображення Sprite Mode - Multiple.



3. Для того, щоб зберегти налаштування, тиснемо на кнопочку Apply.

4. Тепер переходимо в Sprite Editor. Для цього потрібно натиснути на однойменну кнопку.



5. Відкриється вікно для редагування спрайтів, якщо ви виставили Sprite Mode як Multiple, то вам буде доступна кнопка Slice / нарізати в лівому верхньому куті вікна, натискаємо на неї. Тут обираємо потрібний режим нарізання. Скористаємося режимом Grid By Cell Count / сітка за кількістю клітинок.



6. Цей режим зручний коли між спрайтами немає відстані, якраз, як в нашому випадку. Просто рахуємо кількість рядків та колонок і вводимо ці значення в поле Column & Row.



7. Натискаємо на кнопку Slice, потім на кнопку Apply в правому верхньому куті вікна (або просто закриваємо вікно, та у вікні що сплине обираємо Apply).

Налаштування піксельної графіки


1. Параметр Pixel per unit вказує скільки пікселів з вашого спрайта поміститься в одну одиничну клітинку в Unity. Це важливо для послідовності та стилю вашої гри (щоб розмір пікселів всіх спрайтів був однаковим). Для налаштування цього параметрів вам потрібно натиснути на спрайт, та у його властивостях знайти параметр Pixel per unit.



☝Запам'ятай:

Pixel per unit - ставимо таким чином - якщо розмір спрайта  32х64, в цьому випадку вказуємо для параметра Pixel per unit найбільше число (64). 


📢Зверни увагу:

Інколи розмір спрайта може бути вказаний некоректно. В такому випадку, Pixel per unit треба підбирати відносно вже доданих спрайтів у проєкт.


📢Зверни увагу: Для даної графіки налаштуйте Pixel per unit на 32 або на 64, за бажанням, це не є критичним для нашого завдання.



2. Зміна параметра Filter Mode на Point (no filter) допоможе уникнути спотворення та розмиття ваших спрайтів: це важливо, щоб зберегти піксельну графіку у первозданному вигляді. Це дозволяє досягти чіткого відображення текстур в піксельних іграх.



3. Параметр Format встановлює яку схему кольору використовувати для наших спрайтів. Для цієї графіки вказуємо RGBA 32 bit.



📢Зверни увагу: Щоб в інспекторі налаштувати властивості зображення, потрібно натискати на саме на зображення, а не на його частини:




Побудова рівня


Коли спрайт розділений на частини, ви можете легко вибрати окремі елементи та розмістити їх у вашій сцені.

📢Зверни увагу: Щоб "розгорнути" спрайт натисніть на стрілочку біля нарізаного зображення.


☝Запам'ятай: Під час використання Move Tool та утримання клавіші Ctrl обʼєкти будуть переміщуватися по сітці.


Prefab

Prefab - це заготовка об'єкта. Коли у вас на сцені багато однакових обʼєктів, з однаковими компонентами, слід створювати їх на основі Перфаба.


Наприклад, рівень на сцені побудований з однакових блоків. Ви можете просто дублювати обʼєкт (блок) та будувати рівень, а можете створити префаб і дублювати вже префаб. Такий підхід дозволить легко редагувати рівень.


Якщо потрібно змінити колір рівня, що побудований без Prefab, потрібно міняти кожен блок вручну, якщо рівень побудований з префабів, достатньо змінити тільки його.


Створення Prefab


Спершу вам слід створити об'єкт на сцені, додавши до нього всі потрібні компоненти, для стін рівня це можуть бути Rigidbody2D та BoxCollider2D.


📢Зверни увагу:

Налаштування параметра Rigidbody2D Body Type = Static дозволить іншим об'єктам взаємодіяти з блоком, не змінюючи його позиції.


Коли обʼєкт налаштований, просто перетягніть його з вікна Hierarchy до вікна Project.



☝Запам'ятай: Префаби в юніті мають ліворуч зафарбований синій кубик.




👉Завдання: Створіть простий ігровий рівень, використовуючи префаб.

Посилання на графіку для проєкту (продубльоване на початку).


1. Створюємо перфаб блоку, додаємо на нього компоненти Rigidbody2D та BoxCollider2D. Налаштовуємо параметр Rigidbody2D Body Type = Static.



🌟 Підказка: якщо ви забули додати якийсь компонент на префаб, то додавайте його не на обʼєкт на сцені, а безпосередньо на обʼєкт префабу у вікні Project.


2. Копіюючи префаб клавішами Ctrl + D, побудуйте рівень. Затискайте клавішу Ctrl коли перетягуєте обʼєкти по сцені, щоб активувати прив'язку до сітки.

Примітка - для прикладу рівень маленький, побудуйте його більшим, додайте стіни та зробіть його цікавим.



👉Завдання:

Додайте на рівень ігрового персонажа та реалізуйте керування персонажем по аналогії, як ви робили раніше, але використовуйте блоки Rigidbody2D Move Position та Rigidbody2D Get Position.


1. Налаштовуємо зображення персонажа: Pixel per unit - такий самий як на Spit Sheet рівня (32 або 64). Filter Mode - Poin (no filter). Format - RGBA 32 bit.


2. Додаємо на персонажа компоненти Capsule Collider 2D, Rigidbody 2D та Script Machine виставляємо в Rigidbody 2D Gravity Scale = 0.


3. Створюємо скрипт для керування персонажем, вішаємо скрипт на персонажа.





🤔 Подумай:

1. Що таке Prefab?

2. Чи покращує продуктивність гри Sprite Sheet?

3. Як рухати обʼєкти по сітці?

4. Яка комбінація клавіш дублює обʼєкти в Unity?


🎉 Відповіді на запитання (виділи мишею, щоб підглянути):

1. Prefab - це заготовка обʼєкта.

2. Так, такий підхід зменшує навантаження під час малювання спарйтів.

3. Потрібно затиснути клавішу Ctrl під час перетягування обʼєкта.

4. Комбінація клавіш Ctrl + D дублює обʼєкти.