Professional Documents
Culture Documents
Unity Basic Methods Text
Unity Basic Methods Text
Щоб мені змінювати координати об’єктів в юніті мені потрібно взяти координати
GetComponent<>() – важкий метод тому його використовувати у Update дуже погано, зазвичай
його використовують саме у методі Start що не сильно напружує систему. Але використовувати
GetComponent у блоці Update максимально погано
Також для публічних ми можемо атрибут аби заховати можливість задави їй значення в інспекторі:
Prefab
Prefab – це шаблон або макет (наприклад деяка модель дерева з примітивів). Він окремо
створюється і позначається синім кубом(при його редагуванні сцена стане синьою)
Terrain
Terrain – це площина (або просто ділянка) яку можна редагувати та розширювати. Для цього
існують кнопки в редагуванні терейну.
Quaternion.identity – задає напрямок такий же, який і у батьківського об’єкту (в нас це префаб)
Щоб знищувати створені об’єкти потрібно використовувати функцію Destroy(), причому одна з
перегрузок також приймає і час, після якого слід видалити заданий об’єкт.
Input(клавіши)
На відміну від консолі у юніті за натискання клавіш відповідає клас Input та його вбудовані функції
При натисканні Edit Collider ми включаємо редагування колайдеру. На модельці, колайдер стає
світло-зеленим і на ньому з’являються маленькі квадратики(ключові точки), за які ми можемо
тягнути та змінювати розмір та форму колайдеру
Mesh Collider – це колайдер який повторює форму об’єкту (описує сітку взаємодії навколо меша
(об’єкта зі складною формою))
Rigidbody
Компонент додаючий фізику об’єкту. Співпрацює з колізією, тобто умовно куб падає на терейн і з
колізією він бачить що впав на терейн та зупиняється на терейні, без колізії він продовжить падати
в пустоту
Trigger
Важливо що при включеному тригері фізика (Rigidbody) працювати не буде, адже тригер виключає
всі інші колізії, окрім себе(бо він тригерний), також виключяться й інші скрипти(колізія). Тому якщо
нам потрібна фізика то ставимо Rigidbody, якщо тригер зона(для активації чогось в зоні) вмикаємо
галочку що це тригер і прибираємо Rigidbody, якщо ж ми перевіряємо зіткнення колізій, то
вимикаємо і фізику, і тригер.
Метод OnTriggerEnter() спрацьовує коли через об’єкт із цим скриптом проходить якийсь об’єкт, в
даному випадку назву цього об’єкту що проходить виводить у консоль.
ВАЖЛИВО: Може бути лише один унікальний скрипт на об’єкт, два однакових бути не може.
COLLISION
Опрацьовує КОЛІЗІЮ об’єктів, тобто працює коли колізії об’єктів торкаються один одного.
TAG
Тегами ми поділяємо об’єкти на різні групи і ми можемо керувати цими тегами у скриптах
Rigidbody надає нам фізику на об’єкт і щоб керувати самим об’єктом ми можемо надавати йому
силу за допомогою функції AddForce (можна порівняти з ударом)
Якщо ми надаємо швидкість об’єкту, через transform це буде впливати на сам об’єкт і, наприклад
стрибок буде локальним, тобто якщо наш об’єкт знаходиться під нахилом то він буде стрибати у
тому ж напрямку.
GetAxis
Значення у таких випадках будуть або – або + (дивлячись на натиснуту клавішу, тобто умовно A
буде - , а D буде +)
LookAt
1)
2)
Неочевидна річь, але ми можемо складувати вектори однією функцією
Також най не потрібно зчитувати фізику гравця коли ми нічого не натискаємо, адже це
просто не потрібно.
3)
Цей метод приймає назву методу, як string параметр та проміжок часу, ЧЕРЕЗ який буде
активовано скрипт.
InvokeRepeating
Це такий же самий метод, але він на відміну від попереднього запускається циклічно.
У нього 1 параметром задається string назва методу, другим затримка перед активацією і третім
інтервал між повторним викликом
IEnumerator
Invoke та InvokeRepeating приймають в себе назву функції і параметри задати неможливо. Саме
для таких випадків і існує IEnumerator. Це також метод який дозволяє нам робити затримку, проте
відмінність полягає як у складності написання так і у тому що IEnumerator не є циклічним, для
цього вже потрібно використовувати рекурсію.
В свою чергу щоб кликати цей метод потрібно використати ще один метод
1) Поганий варіант:
2) Через публічне поле, тобто зробити поле до якого ми хочемо мати доступ публічним
Або щоб приховати саме поле в інспекторі(юніті)
В цьому випадку ми будемо читати значення окремою функцію, тобто ми просто покличемо
цю функцію в іншому скрипті
RayCast
Для відправки лучів ми використовуємо клас фізики та такий код:
Ми випускаємо луч від позиції нашої камери, у сторону вперед, і точку зіткнення ми записуємо у
RayCast hit. Доречі, можна дописати ще один аргумент, а саме дистанцію.
Ця точка має координати зіткнення, які ми використовуємо щоб телепортувати гравця на нове
місце. Проте потрібно пам'ятати про те що центральна точка нашого гравця знаходиться в центрі
об'єкту, тому нам потрібно це враховувати і припіднімати об'єкт.
ВАЖЛИВО! Іноді луч може вилітати від гравця, тому для вирішення цієї проблеми потрібно задати
гравцю слой, що він буде ігнорувати рейкастінг(там де теги)
Основними з яких є text, image, button. Вже похідними від них є Slider(повзунок),
DropDown(відкривше меню), Toggle(галочка).
UX – user experience
В цьому випадку класс Text це покликання на стару версію legacy text. Тому нам потрібно
прописати таке жахіття
- зміна тексту.
Layout
Цей компонент групує елементи і робить між ними рівні відступи(створює пустий об’єкт, додаємо
цей компонент і тепер всі об’єкти в групі будуть рівноввідалені)
Зупинка часу на кнопку
Щоб виходити з гри, нам в першу чергу потрібно зробити меню та кнопку, потім створити скрип де
зробити функцію, в якій використати Application.Quit();
Play
Щоб запускати гру, інші рівні, повертатись у меню нам потрібно перш за все створити окремі сцени
для самої гри(рівня) та меню. Це робиться в File > Build settings. Перетягуємо сцени у поле зверху, і
ми побачимо справа індекси сцен. Функція, за допомогою якої ми будемо змінювати рівні(сцени)
приймає, або назву сцени, або назву сцени.