Знайомство із Unity Visual Scripting. Візуальне програмування. Рух персонажу
×Інструкція до роздатного матеріалу, або як зрозуміти про що тут написано:
📢Зверни увагу: - Після такого значка буде вказано інформацію, на яку варто звернути увагу
☝Запам'ятай: - Після такого значка буде вказано інформацію, на яку варто вивчити
🤔Подумай: - Після такого значка буде вказано інформацію, яку варто обдумати
🔎Цікаво: - Після такого значка буде вказано якийсь цікавий факт
👉Завдання № - Після цього значка буде наведено завдання для виконання.
Примітка 1. - Після такої позначки буде написано додаткову інформацію
Компонент (в Unity) — це спеціальна частина, яку додають до об’єкта в грі, щоб надати йому нові властивості або можливості. Кожен компонент відповідає за певну функцію, як, наприклад, рух, можливість створювати звук чи світло, і допомагає об’єктам взаємодіяти з навколишнім середовищем у грі.
Скрипт — це набір команд або інструкцій, які “говорять” об’єкту в грі, що саме він має робити.
Asset — це будь-який ресурс, який використовується в грі, наприклад, картинка, звук, модель персонажа чи фон. Це матеріали, з яких створюють візуальні та звукові елементи гри.
Top-Down Game — це гра, де гравець бачить усе зверху, наче дивиться на ігровий світ з висоти. У таких іграх об’єкти, персонажі та локації показані “згори вниз”. Це дозволяє легко оглядати всю карту або навколишнє середовище і контролювати персонажа, рухаючись у різні сторони.
Прототип гри — це початкова, спрощена версія гри, яка створюється для перевірки ідеї, механік або концепції. Прототип дозволяє побачити, чи цікава гра, чи є в ній баланс, перш ніж створювати повну версію.
Створення масштабних ігор часто починається з прототипу. Для протипування ігор, доречно використовувати прості спрайти, щоб не витрачати час на їх малювання. В Unity є вбудований набір примітивних спрайтів (квадрати, кола, трикутники). Щоб створити такий спрайт, треба у вікні Project натиснути ПКМ (правою кнопкою миші) Create -> 2D -> Sprites -> обрати потрібний вам спрайт серед запропонованих.
☝Запам'ятай: Triangle - трикутник, Square - квадрат, Circle - коло
Visual Scripting - це візуальна мова програмування. За допомогою логічних вузлів (блоків), ви зможете створювати ланцюжки коду для своїх ігор.
Щоб створити Visual Scripting, потрібно у вікні Project натиснути ПКМ, далі Create -> Visual Scripting -> Script Graph.
У вас зʼявиться Script Graph, саме в ньому ми будемо писати код. Для прикладу, назвемо це Graph “PlayerScript”.
Для того, щоб скрипт почав працювати, його потрібно додати на якийсь обʼєкт. Це робиться дуже просто:
Готово! Скрипт додано, коли ви запустите гру, обʼєкт почне його виконувати.
Щоб програмувати, або редагувати скрипт, його потрібно відкрити. Для цього, просто знайдіть його у вікні Project, та натисніть по ньому 2 рази ЛКМ (лівою кнопкою миші). Перед вами відкриється поле для редагування скрипта. Ви можете відкрите це вікно на весь екран для зручності.
Щоб додати сюди вузол (блок) коду, потрібно натиснути ПКМ по робочій області, обрати Add Node / додати вузол. Зʼявиться віконечко для вибору вузлів. Ви можете шукати їх вручну, або ж скористатися рядком пошуку.
Transform - це основний компонент в Unity. Він є абсолютно на всіх
об'єктах. Цей компонент відповідає за позицію обʼєкта на сцені, за розмір обʼєкта та за те, як обʼєкт
повернутий.
☝Запам'ятай: - всі властивості компонентів, можна змінювати через скрипт. Властивості - це як налаштування або параметри. Наприклад, у компонента Transform властивостями будуть Position, Rotation, Scale.
🤔Подумай: Якщо Transform відповідає за позицію обʼєкта, чи можна тоді з його допомогою реалізувати рух обʼєкта?
У великих проєктах міститься багато різних асетів (Asset): скриптів, зображень тощо. Щоб не загубитися в усьому різноманітті, потрібно все сортувати по теках, та давати всім обʼєктам відповідні назви.
📢Зверни увагу: Теки та всі інші обʼєкти варто називати виключно англійською мовою.
Для того, щоб створити теку, потрібно у вікні Project натиснути ПКМ Create
-> Folder. У вас зʼявиться тека (Folder), тепер можна написати їх назву, наприклад Scripts.
📢Зверни увагу: Ви завжди зможете змінити назву теки, для цього натисніть по ній ЛКМ (лівою кнопною миші), далі оберіть Rename / перейменувати.
☝Запам'ятай: Варто робити під кожну групу обʼєктів свою теку, тоді буде легко орієнтуватися в проєкті. Також, дуже часто, над одною грою працює багато людей, тому, назви повинні бути зрозумілі всім. Не варто називати теку цифрою, або одною буквою. Краще дати “говорючу” назву. Наприклад, тека для зображень, може називатися як Images, Sprites, Textures.
Є спеціальна платформа, сайт, де ви можете взяти гарні спрайти та багато іншого для своїх ігор - 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. Створюємо 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 відображаються всі теки, які є в проєкті. Є дві основні теки в Unity: Assets та Packages.
Тека Assets - це повністю ваш простір, саме в цій теці треба створювати скрипти, додавати спрайти та інші асети.
Тека Packages - це більш технічна тека, пізніше ви будете з нею взаємодіяти, але на разі, ми нічого з неї не видаляємо, та нічого туди не додаємо.
Перетягуючи цей повзунок, ви можете змінювати розмір іконок. Це може бути дуже корисним при деяких задачах.
Можна змінити відображення вікна з двох колонок - на одну
колонку, це також може бути дуже зручним в багатьох випадках.
В рядочку, зверху, показується шлях до теки, в якій ви зараз знаходитеся. Це дозволяє зручно орієнтуватися у файлах вашого проєкту.
Щоб перевірити свої відповіді, виділи текст: