Знайомство із Unity Visual Scripting. Візуальне програмування. Рух персонажу

×

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


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

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

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

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

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

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

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


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


Компонент (в Unity) — це спеціальна частина, яку додають до об’єкта в грі, щоб надати йому нові властивості або можливості. Кожен компонент відповідає за певну функцію, як, наприклад, рух, можливість створювати звук чи світло, і допомагає об’єктам взаємодіяти з навколишнім середовищем у грі.


Скрипт — це набір команд або інструкцій, які “говорять” об’єкту в грі, що саме він має робити. 


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


Top-Down Game — це гра, де гравець бачить усе зверху, наче дивиться на ігровий світ з висоти. У таких іграх об’єкти, персонажі та локації показані “згори вниз”. Це дозволяє легко оглядати всю карту або навколишнє середовище і контролювати персонажа, рухаючись у різні сторони.


Прототип гри — це початкова, спрощена версія гри, яка створюється для перевірки ідеї, механік або концепції. Прототип дозволяє побачити, чи цікава гра, чи є в ній баланс, перш ніж створювати повну версію.




Вбудовані примітивні sprites (зображення) в Unity


Створення масштабних ігор часто починається з прототипу. Для протипування ігор, доречно використовувати прості спрайти, щоб не витрачати час на їх малювання. В Unity є вбудований набір примітивних спрайтів (квадрати, кола, трикутники). Щоб створити такий спрайт, треба у вікні Project натиснути ПКМ (правою кнопкою миші) Create -> 2D -> Sprites -> обрати потрібний вам спрайт серед запропонованих.


☝Запам'ятай: Triangle - трикутник, Square - квадрат, Circle - коло



Visual Scripting

Visual Scripting - це візуальна мова програмування. За допомогою логічних вузлів (блоків), ви зможете створювати ланцюжки коду для своїх ігор.


Створення Script Graph


Щоб створити Visual Scripting, потрібно у вікні Project натиснути ПКМ, далі Create -> Visual Scripting -> Script Graph.



У вас зʼявиться Script Graph, саме в ньому ми будемо писати код. Для прикладу, назвемо це Graph “PlayerScript”.



Як запустити скрипт в дію

Для того, щоб скрипт почав працювати, його потрібно додати на якийсь обʼєкт. Це робиться дуже просто:

  1. Додаємо  спеціальний компонент Scrip Machine,  цей компонент бере написаний вами скрипт, та змушує його працювати. Щоб додати компонент на обʼєкт, потрібно натиснути на цей обʼєкт на Scene, або знайти його в вікні Hierarchy, далі у вікні Inspector натиснути на Add Component.
  2. Тепер, коли Scrip Machine додано, натискаємо на кружечок, в полі Graph, та обираємо створений скрипт. Або, можна просто перетягнути свій скрипт у це поле.


Готово! Скрипт додано, коли ви запустите гру, обʼєкт почне його виконувати.


Як програмувати скрипт

Щоб програмувати, або редагувати скрипт, його потрібно відкрити. Для цього, просто знайдіть його у вікні Project, та натисніть по ньому 2 рази ЛКМ (лівою кнопкою миші). Перед вами відкриється поле для редагування скрипта. Ви можете відкрите це вікно на весь екран для зручності.



Щоб додати сюди вузол (блок) коду, потрібно натиснути ПКМ по робочій області, обрати Add Node / додати вузол. Зʼявиться віконечко для вибору вузлів. Ви можете шукати їх вручну, або ж скористатися рядком пошуку.



Компонент Transform


Transform - це основний компонент в Unity. Він є абсолютно на всіх об'єктах. Цей компонент відповідає за позицію обʼєкта на сцені, за розмір обʼєкта та за те, як обʼєкт повернутий.


☝Запам'ятай: - всі властивості компонентів, можна змінювати через скрипт. Властивості - це як налаштування або параметри. Наприклад, у компонента Transform властивостями будуть Position, Rotation, Scale.


🤔Подумай: Якщо Transform відповідає за позицію обʼєкта, чи можна тоді з його допомогою реалізувати рух обʼєкта?



Як створювати теки

У великих проєктах міститься багато різних асетів (Asset): скриптів, зображень тощо. Щоб не загубитися в усьому різноманітті, потрібно все сортувати по теках, та давати всім обʼєктам відповідні назви.


📢Зверни увагу: Теки та всі інші обʼєкти варто називати виключно англійською мовою.


Для того, щоб створити теку, потрібно у вікні Project натиснути ПКМ Create -> Folder. У вас зʼявиться тека (Folder), тепер можна написати їх назву, наприклад Scripts.

📢Зверни увагу: Ви завжди зможете змінити назву теки, для цього натисніть по ній ЛКМ (лівою кнопною миші), далі оберіть Rename / перейменувати.


☝Запам'ятай: Варто робити під кожну групу обʼєктів свою теку, тоді буде легко орієнтуватися в проєкті. Також, дуже часто, над одною грою працює багато людей, тому, назви повинні бути зрозумілі всім. Не варто називати теку цифрою, або одною буквою. Краще дати “говорючу” назву. Наприклад, тека для зображень, може називатися як Images, Sprites, Textures.


Asset Store

Є спеціальна платформа, сайт, де ви можете взяти гарні спрайти та багато іншого для своїх ігор - Unity Asset Srore. Перейти на цю платформу можна прямо з редактора Unity.

📢Зверни увагу: Переконайтеся, що ви підʼєднані до інтернету.

Щоб перейти до Unity Asset Srore потрібно натиснути на вкладку Window -> Asset Store.



Вам відкриється ось таке вікно, для зручності, перейдемо в браузер, для цього натискаємо кнопку Search online



Вас перенесе на цей сайт: https://assetstore.unity.com


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



Коли ви знайшли цікавий вам набір, натискаємо на нього, далі натискаємо на кнопку Add to My Assets. У вікні що спливає приймаємо угоди ліцензії натиснувши на кнопку Accept.


📢Зверни увагу: Кожна ліцензія має свої особливості використання. Так, звантаживши безплатні ассети, зазвичай їх не можна розповсюджувати. Тобто ти не можеш продавати чи дарувати ассети що звантажив, але можеш використати їх у своєму проєкті. Краще завжди читати умови ліцензії.



Коли додали ассет на сайті, він зʼявиться і в Unity.

Заходимо на вкладку Window -> Package Manager

Обираємо My Assets / мої асети


Тут з'явиться ассет який ви додали. 



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



Якщо ассет все одно не зʼявився, то ви щось не правильно зробити на сайті.


Обравши потрібний асет, натискаємо Download. 


Після завантаження натискаємо Import.








В проєкті зʼявиться тека із завантаженими асетами.



👉Завдання №1: Створити проєкт, додати асет ігрового персонажа, реалізувати керування персонажем

1. Створюємо 2D проєкт.

2. Тепер потрібно додати ассет нового персонажа, для цього відкриваємо вікно Asset Store (Window -> Asset Store). Тиснемо кнопку Search online, нас переносить на сайт “Asset Store” (https://assetstore.unity.com). 



3. На сайті шукаємо 2D спрайти, які нам подобаються. Можна скористатися рядочком пошуку. Наприклад дати запит “Character” (персонаж). Можете налаштувати, щоб вам пропонували тільки безплатні асети.



4. Додаємо асет, який сподобався. Упевніться, що це асет для 2D гри! Назва набору з прикладу: 2D Character - Astronaut


5. Повертаємося в редактор Unity. Відкриваємо вікно Package Manager (Window -> Package Manager). Потрібно обрати Packages: My Assets.


6. Знайти асет, що ви додали. Якщо його немає, то оновлюємо список, натиснувши на кругову стрілку.



7. Коли обрали потрібний асет, тиснемо Download. Після завершення звантаження натискаємо Import.



8. У вікні, що спливає, також тиснемо Import.


9. До проєкту додався набір асетів, в цьому випадку тека “COPY SPRIGHT”. 



10. Наразі, нам потрібен лише спрайт ігрового персонажа. Але ми завантажили й багато інших обʼєктів. Потрібно знайти теку зі спрайтом персонажа. Шукайте теки з назвою Sprite, Character, Idle. В даному пакеті асетів, спарйт що показаний в прикладі, знаходиться за шляхом Assets ->COPY SPRIGHT->Comic Battle Royale->2D Character - Astronaut->Variant A->Sprites->Character->idle->down->01.png



11. Щоб створити ігрового персонажа, просто перетягуємо спрайт на сцену.


12. Ми будемо писати скрипт керування головним героєм, щоб скрипт працював, потрібно додати його на персонажа. Тиснемо на персонажа на сцені. У вікні Inspector натискаємо Add Component. Додаємо Script Machine.

13. У вікні Project створімо теку “Scripts”. В цій теці буде зберігатися скрипт.



14. Тепер створюємо скрипт (Create -> Visual Scripting -> Script Graph), назвемо його PlayerController. Одразу встановіть скрипт на персонажа (перетягніть його в Script Machine).



15. Відкриваємо скрипт та додаємо чотири блоки “on Keyboard Input”.



Цей блок відстежує натискання клавіш з клавіатури. Він має два налаштування: Key - яка клавіша натиснута, Action - в який момент натиску потрібно спрацювати. Down - спрацьовує тільки в момент натискання клавіші, Hold - спрацьовує постійно, поки клавіша затиснута, Up - спрацьовує в момент відпускання клавіші.

16. Налаштовуємо блоки так, щоб вони реагували на стрілочки з клавіатури, та налаштовуємо параметр Action - Hold.



17. Алгоритм буде наступний: беремо позицію, на якій персонаж перебуває зараз, потім, зовсім трішки її змінюємо. Далі пересуваємо персонажа на нову, змінену позицію.


18. Блок який бере поточну позицію персонажа - Get position.



19. Блок, який встановлює нову позицію персонажа - Set position.



20.  Блок для додавання позицій - add. 


A - це перший доданок, Б - другий доданок, який можна вказати вручну (X, Y). Для руху вгору треба збільшити Y, для руху вниз, треба зменшити Y. Для руху ліворуч та праворуч - міняємо X.

📢Зверни увагу: - існують різні блоки для додавання різних величин. Щоб додавати між собою позиції, потрібно використовувати  Add (in Math/Vector).



21. Зʼєднуємо блоки для руху в гору між собою.



🤔Подумай: - Спробуй пояснити своїми словами, як працює цей код.


22. Реалізуймо рух персонажа вниз, ліворуч та праворуч. 




📢Зверни увагу: - для руху ліворуч та вниз ми використовуємо блок subtract / віднімання. A - число від якого віднімаємо (Зменшуване);  Б - число яке віднімаємо (Від’ємник).

23. Скрипт готовий, можеш його протестувати!


🤔Подумай: - щоб змінити швидкість руху персонажа, потрібно збільшити або зменшити знацення "0.05". Щому так?



Корисна інформація про вікно Project


Теки Assets та Packages.

Як ви вже знаєте, у вікні Project відображаються всі теки, які є в проєкті. Є дві основні теки в Unity: Assets та Packages.

Тека Assets - це повністю ваш простір, саме в цій теці треба створювати скрипти, додавати спрайти та інші асети.

Тека Packages - це більш технічна тека, пізніше ви будете з нею взаємодіяти, але на разі, ми нічого з неї не видаляємо, та нічого туди не додаємо.




Налаштування вікна Project

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



Можна змінити відображення вікна з двох колонок - на одну колонку, це також може бути дуже зручним в багатьох випадках.



Шлях до поточної теки

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



Питання для самоперевірки

  1. Яку вісь (X чи Y) треба змінювати, щоб персонаж рухався вгору?
  2. Чи існують безплатні асети в Asset Store?
  3. Які три основні параметри компонента Transform?
  4. Чи можна змінювати параметри компонента трансформ через скрипт, наприклад Position?

Щоб перевірити свої відповіді, виділи текст:

  1. Щоб персонаж рухався вгору, треба змінювати значення по вісі Y.
  2.  В Asset Store існують як безплатні так і платні асети.
  3. Основні параметри компонента Transform - Position (позиція), Rotation (поворот), Scale (розмір).
  4. Так, через скрипт можна змінювати всі параметри компонента Transform, зокрема Position.