реклама

Изненадваща характеристика на интернет икономиката е възходът на индии видеоигри. След като изключителният домейн на хиляди човека, многомилионни студиа с тройни A, са разработени редица набори от инструменти, които донесете съвременни ресурси за разработка на игри в ръцете на хора или малки, специални колекции от програмисти и дизайнери. По-рано сме обсъждали най-добрите инди игри 10 Инди игри толкова добри, че ще забравите, че изобщо са индиМоже да има моменти обаче, когато искате нещо различно от инди-нормата. Игра, която следва инди стойности, но е направена с качеството, за което са известни най-добрите AAA игри. Заглавия като ... Прочетете още , така че не забравяйте да ги проверите за някакво вдъхновение за това какво може да се постигне с инструменти като Unity.

Това ръководство е достъпно за изтегляне като безплатен PDF файл. Изтеглете Програмиране на игра с единство: Ръководство за начинаещи сега. Чувствайте се свободни да копирате и споделяте това с приятелите и семейството си.
instagram viewer

Тези екипи за развитие на инди игра са демонстрирали гъвкавост и толерантност към риска, които в много случаи им позволяват да прокарват иновациите в геймплея по-бързо от своите големи бюджетни колеги. През последните години бяха представени редица шокиращо успешни инди заглавия, включително Minecraft, Limbo, и Супер месо момчеи дори да не е нужно да умеете да правите игри като тази, можете направете игра с помощта на Buildbox Как да направите видео игра за една седмица с помощта на BuildboxИма програма, която прави разработката на игри невероятно лесна дори за тези, които нямат абсолютно никакъв опит в проектирането на видео игри. Нарича се Buildbox. Ето защо трябва да го опитате. Прочетете още .

В бързо развиващия се пейзаж на развитието на играта Инди, единство се превърна в нещо като де-факто стандарт: ниската му цена, лекотата на използване и широкият набор от функции го правят идеален за бързо развитие на играта. Единството е толкова гъвкаво, че можете дори направете свои собствени персонални контролери за игри Как да си направим потребителски контролер за игри с Arduino и UnityИскали ли сте някога да проектирате свой собствен контролер за игри? По-лесно е, отколкото си мислите! Прочетете още с малко DIY знаете как!

Дори големи студия като CCP (Developers of Eve Online) използвайте го за бързо прототипиране на игрови концепции. Unity предлага „игра на двигателя в кутия“ - двигател за физика и изобразяване с куки за няколко езика на скриптове, адаптивен към практически всеки жанр на видеоиграта.

Докато Unity предлага визуален редактор за манипулиране на игровата среда, Unity не е инструмент за създаване на игри с нулево програмиране. Това изисква от вас да програмирате, за да произвеждате резултати, но също така ви дава много по-гъвкав и мощен инструмент, отколкото може да е възможно от всяка програма за създаване на игри.

Unity няма да свърши работата вместо вас, но това намалява значително бариерата за влизане. Започвайки напълно от нулата с C ++ и OpenGL, може да отнеме дни, за да стигнете до момента, в който всъщност има нещо, изобразено на екрана. Използването на Unity отнема около десет секунди. Unity поставя основните елементи на създаването на игри в ръцете на начинаещите програмисти по бърз, интуитивен начин.

Днес ще ви насоча към всичко, което трябва да знаете, за да направите игра в Unity, която е разбита на десет основни глави:

§1 - Версии на единството

§2 – Инсталиране на единство

§3 - Кратко въведение в обектно-ориентираната парадигма

§4 - Основи на единството

§5 – Пример: Основни елементи на играта

§6 - Писане в единство

§7 – Пример: Скрипт понг

§8 - Проучване на документацията / Научете повече

§9 - Създаване на вашата игра / Компилиране към самостоятелно приложение

§10-Заключителни бележки

1. Версии на единството

Unity се предлага в два основни вкуса: Pro версия и безплатна версия. Има а брой разлики, но като цяло, професионалната версия поддържа редица визуални подобрения (като меки сенки в реално време и след обработка) и голям брой сравнително незначителни функции, които са изключително полезни за по-сложни игри.

Въпреки това, за повечето сравнително прости игри, които може да искате да изградите, безплатната версия на Unity е напълно адекватна. Ще разделим по-подробно основните разлики по-долу за тези, които се интересуват.

1.1 Цени

Безплатната версия на Unity е, разбира се, безплатна. Съществуват обаче няколко ограничения: безплатната версия на Unity не може да бъде лицензирана на никоя компания с годишен доход над $100,000. Въпреки че подобни организации са извън обхвата на настоящото ръководство, ако подозирате, че може да станете такава организация, вероятно е разумно да пролетте за версията Pro.

Про версията на Unity е $75 месец, или $1500 за постоянен лиценз и няма ограничения какво можете да правите с игрите, създадени с него. Налична е и безплатна 30-дневна безплатна пробна версия, която ще използваме за това ръководство, за да ви дадем максимално пълен преглед на наличните функции. Предлага се и едногодишен студентски лиценз Studica за $129.

1.2 Характеристики

В безплатната версия на Unity има много функции. Най-важните разлики обаче са следните: на безплатната версия на Unity липсват редица опции за изобразяване, които позволяват по-добре изглеждащи, по-бързо работещи игри (поддръжка на LOD, последваща обработка на екрана, усъвършенствани шейдъри, меки сенки в реално време и отложени рендиране). Липсва и пълното механична анимационна системаи някои AI инструменти.

Като цяло, за сложни мащабни проекти или проекти, при които графичното изпълнение е важно, професионалната версия си заслужава. Използвам професионалната версия, защото разработвам игри за виртуална реалност за Oculus Rift Преглед на Oculus RiftВиртуалната реалност не е новост, но най-накрая е достъпна и в рамките на нашите разбирания. След четири години и два прототипа за разработка, пристигна окончателното потребителско издание на Oculus Rift. Прочетете още и поддръжката за обработка на екрана след обработка е необходима за правилното взаимодействие със слушалките.

2. Инсталиране на Unity

Единството е лесно за инсталиране. Можете да изтеглите изпълнимия файл от unity3d.com/get-unity/download.

След като го изтеглите, стартирайте го и след това следвайте инструкциите на инсталатора. Когато инсталацията приключи, ще се появи прозорец със заглавие „активирайте вашия лиценз Unity“. Поставете отметка в квадратчето „активирайте безплатна 30-дневна пробна версия на Unity Pro“ и след това „OK“.

Честито! Вече имате 30-дневен пробен период на Unity Pro. Когато изпитването изтече, ако не искате да купувате професионалната версия, можете да преминете към безплатна версия и да запазите съществуващото си съдържание.

3. Кратко въведение в обектно-ориентираната парадигма

Преди да започнете с Unity, важно е малко да разгледаме основите. Единството поддържа и двете ° С# и JavaScript за програмиране на игри 7 езика за развитие на Unity Game, които да научите: кое е най-доброто?Искате ли да започнете разработка на игри в Unity? Ще ви е необходимо запознаване с един от тези съвместими с Unity езици. Прочетете още ; ще работим със C # за този урок.

Първо, ако никога не сте програмирали досега, оставете този урок настрана и прекарайте няколко дни в работа чрез Microsoft C # Езиков грунд докато не се почувствате комфортно да използвате езика за прости задачи.

Ако искате нещо малко по-различно от C # (но не непременно език, който можете да използвате в Unity), тогава разгледайте нашето ръководство за шест най-лесни езика за програмиране за начинаещи 6 най-лесни езика за програмиране, които да научите за начинаещиДа се ​​научим да програмираме, е да намерите правилния език точно толкова, колкото и за процеса на назидание. Ето първите шест най-лесни езика за програмиране за начинаещи. Прочетете още .

Ако сте програмирали преди това на императивен или обектно ориентиран език, като C или Java, огледайте грунда и се запознайте с това как C # се различава от другите езици, които сте използвали в миналото. Така или иначе, не продължавайте с урока, докато не се почувствате удобно да решавате прости проблеми с C # (например, ако искам да попитам ако напишете програма, която отпечатва първите сто прости числа, трябва да можете да пишете тази програма, без да се консултирате Google).

Най-важната концепция за разбиране тук е обектно-ориентирана парадигма Откъде „Обектно ориентирано“ програмиране получи името си?Обектно ориентираното не е просто произволна модна дума, която чувате в кръговете за програмиране. За името има причина - но какво? Присъединете се към мен, докато изследвам някои основи на програмните концепции и обяснявам ... Прочетете още (съкратено като обектно-ориентиран). В обектно ориентираните езици програмите са разделени на функционални единици, наречени обекти. Всеки обект има свои частни променливи и функции. Извикват се специфични за обекта функции методи.

Идеята тук е модулност: чрез изолиране на всеки обект и принуждаване на други обекти да взаимодействат с него чрез неговите методи можете да намалите броя на възможните неволни взаимодействия - и чрез разширение, бъгове. Можете също да създадете обекти, които можете да използвате повторно по-късно, без промяна. В Unity ще изградите тези обекти и ще ги прикачите игрални образувания (чието поведение ще управляват).

Обектите са инстанцирани от класове: клас е само файл, който представя дефиницията на вашия обект. Така че, ако искате a Mook обект, който обработва AI за враг във вашата игра, вие трябва да напишете клас „Mook“ и след това да прикачите този файл към всяко вражеско образувание. Когато стартирате играта си, всеки враг ще бъде оборудван с копие на обекта „Mook“.

Прикачването на нов скрипт към обект изглежда така:

Програмиране на игра с единство: Наръчник за начинаещи единство програма програма 1

На първо място, изберете обекта и отидете на Инспектор. Кликнете върху Добавете компонент бутон.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 2

Отидете на нов сценарий, въведете желаното име и щракнете създайте и добавете.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 3

Сега имате нов скрипт, който можете да редактирате, като щракнете двукратно върху него!

Класовият файл изглежда така:

използване на UnityEngine; публична класа Mook: MonoBehaviour {private float health; void Start () {здраве = 100; } void Update () {if (health> 0) {/ * Търсете играч, ако срещнете играча на пътя, убийте го, ако бъдете застрелян, премахнете произволно количество здраве * /}} }

Нека да разбием това:

  • Използване на UnityEngine: Този ред казва на C #, че искаме да използваме библиотеките на Unity, които ни позволяват да се свържем с играта Unity.
  • Публична класа Mook: MonoBehaviour:Този ред декларира класа и името му - Mook.
  • Частно поплавково здраве: Това декларира променлива на частен клас (която може да бъде променена само от вътре в класа). На променливата е дадена стойност в начало.
  • Невалиден старт (): Това декларира метод, наречен начало. Стартът е специален метод, който работи само веднъж, когато играта първоначално стартира.
  • Актуализиране на празнотата (): Актуализацията е друг специален метод, който работи на всеки кадър. По-голямата част от вашата логика на играта ще отиде тук.
  • // ако срещнете играча на пътя, убийте го: Този ред е коментар (всеки ред, започващ с двойна наклонена черта, се игнорира от C #). Коментарите се използват, за да си напомняте какво точно правят битовете код. В този случай този коментар се използва, за да застане на по-сложен блок код, който всъщност прави това, което коментарът описва.

Заедно с начало и Актуализация, можете да инстанцирате собствените си методи с почти всяко име. Методите, които създавате обаче, няма да се изпълняват, освен ако не бъдат извикани. Нека обявим метод за хипотетичен клас, наречен addTwoNumbers което добавя две числа заедно:

public float addTwoNumbers (float a, float b) {return a + b; }

Това декларира публичен (достъпен за други обекти) метод, който връща float, наречен addTwoNumbers, който приема два поплавъка като вход (наречен а и б). След това връща сумата от двете стойности като своя изход.

Извикване на този метод от същия клас (да речем, отвътре Актуализация) изглежда така:

плаващ резултат = addTwoNumbers (1, 2);

Обаждането на метода от друг клас е подобно:

екземпляр addTwoNumbers; float резултат = instance.addTwoNumbers (1, 2);

Отново, това просто създава инстанция от нашия клас, осъществява достъп до подходящия метод и го захранва числата, които искаме да добавим, след което съхранява резултата в доведе до. Simple.

Ако вашият скрипт е прикачен към обект, който има специални свойства (като излъчвател на частици), които не могат да бъдат достъпни при нормалния набор от параметри на GameObject можете да изберете да го третирате като различен вид игрално образувание, като използвате на GetComponent метод.

Синтаксисът за това изглежда така:

GetComponent() .Play ();

Ако нещо от това не ви е познато, върнете се и преминете през грунд C #. Ще ви спести много разочарование, докато продължим.

4. Основи на единството

В този раздел ще работим по основната механика на двигателя на Unity. Работният процес в Unity върви по следния начин:

  1. Създайте субект, който да изпълнява роля в играта (празно GameObjects може да се използва за абстрактни логически задачи).
  2. Напишете или намерете файл от клас и го добавете към образуването като скрипт (използвайки Добавете компонент бутон в инспектор видите.
  3. тичам > тест > отстраняване на грешки > повторение докато не работи и преминете към следващия елемент на играта.

Unity се предлага с няколко основни раздела за изглед, които могат да бъдат изложени по различни начини за вкуса на потребителя. Големите пет са:

  1. Игра: показва работещ екземпляр на играта, с който можете да взаимодействате и да тествате.
  2. сцена: предоставя статична, редактируема версия на света на игрите.
  3. Инспектор: ви позволява да променяте отделни образувания в света на игрите, като ги избирате в редактор раздел.
  4. Проект: ви позволява да преглеждате файловете на проекта и да влачите модели, материали и други ресурси в редактор раздел, за да ги поставите в света на игрите.
  5. Йерархия: този раздел показва всички обекти в света, което ви позволява да намерите отдалечени обекти на сцената и родителски образувания един към друг, като щракнете и плъзнете.

Вижте диаграмата по-долу за местоположението на всички тези неща:

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 0

4.1 Единни образувания

4.1.1 Мрежи

Мрежите са начинът 3D геометрия е представена в Единство. Можете или да използвате вградения Unity примитивен обекти (кубчета, сфери, цилиндри и т.н.) или импортирайте свои собствени 3D модели от пакет за моделиране като общителен човек Първи стъпки с Blender: 7 фантастични урока за начинаещи3D моделирането е отличен начин за упражняване на креативност, като същевременно поддържате връзка с техническата си страна. Ето няколко страхотни безплатни уроци. Прочетете още или маи Учене на Мая 2016: Къде да започнемМая е инструмент, използван за 3D анимация, но идва с невероятно стръмна крива на обучение. Какъв добър учебен материал има? Прочетете още . Unity поддържа различни 3D формати, включително .fbx, и .3ds.

Основните инструменти за манипулиране на окото са бутоните за мащабиране, завъртане и превод в горния ляв ъгъл на интерфейса. Тези бутони добавят контролни икони към моделите в изгледа на редактора, които след това могат да бъдат използвани за манипулиране в пространството. За да промените текстурните или физическите свойства на даден обект, изберете ги и използвайте инспектор преглед за анализ на материал и абсолютно твърдо тяло елементи.

4.1.2 GUI елементи

Традиционните графични спрайтове и текст могат да се показват с помощта на Текст на GUI и на GUI текстура GameObjects в редактора. Въпреки това, по-здравият и реалистичен начин за работа с UI елементи е използването на 3D текст и куадро GameObjects (с прозрачни текстури и неосветен прозрачен шейдър) за поставяне на HUD елементи в игровия свят като единици.

В йерархия виж, тези елементи на игра могат да се плъзгат върху основната камера, за да ги направят деца, като се гарантира, че се движат и въртят с камерата.

GUI елементите (текст и текстури) могат да имат своя размер и мащаб, коригирани с помощта на съответните полета в раздела на инспектора.

4.1.3 Материали

Материалите са комбинации от текстури и шейдъри Обяснени са пет важни условия за компютърни игриАко играете игра на конзола, техническите детайли се обработват вместо вас. Някои играчи предпочитат това, но компютърните геймъри често се наслаждават на по-голямата степен на контрол, която имат над окото на играта ... Прочетете още и може да се плъзне директно върху обекти на играта от раздела на проекта. Голям брой шейдъри се доставят с Unity Pro и можете да коригирате прикрепената към тях текстура, като използвате раздела инспектор за обект, към който са приложени.

За да импортирате текстура, конвертирайте я в a .jpg, .png, или .bmp, и го плъзнете в актив папка в директорията на проекта Unity (която се появява в Моите документи по подразбиране). След няколко секунди в редактора ще се появи лента за зареждане. Когато приключи, ще можете да намерите изображението като текстура под проект раздел.

4.1.5 Светлини

Светлините са GameObjects които проектират сияние върху света. Ако на вашата сцена няма светлини, всички полигони са начертани на едно и също ниво на яркост, придавайки на света плосък, измит вид.

Светлините могат да бъдат позиционирани, завъртени и да имат няколко вътрешни характеристики, които можете да персонализирате. Най- интензивност плъзгачът контролира яркостта на светлината и диапазон контролира колко бързо избледнява.

Насоките в гледка към сцената показват ви максималния обхват на осветлението. Играйте с двете настройки, за да постигнете желания ефект. Можете също да коригирате цвета на светлината, модела (курабийка на повърхността се показва светлината и какъв вид светкавица се появява на екрана, когато гледате директно към светлината. Бисквитката може да се използва за фалшифициране на по-реалистични светлинни модели, създаване на драматични фалшиви сенки и симулация на прожектори.

Трите основни вида светлина са място, точка, и посока.

Точкови светлини имат местоположение в 3D пространство и прожектират светлина само в една посока в конус с променлив ъгъл. Те са добри за фенерчета, прожектори и като цяло ви дават по-прецизен контрол на осветлението. Точковите светлини могат да хвърлят сенки.

Точкови светлини имат местоположение в 3D пространство и хвърлят светлина равномерно във всички посоки. Точковите светлини не хвърлят сенки.

Насочени светлини, накрая, се използват за симулиране на слънчева светлина: те излъчват светлина в посока сякаш от безкрайно далеч. Насочените светлини засягат всеки обект в сцената и могат да създават сенки.

4.1.6 Системи за частици

А Система от частици е GameObject който генерира и контролира стотици или хиляди частици едновременно. Частиците са малки, оптимизирани 2D обекти, показвани в 3D пространство. Системите за частици използват опростено изобразяване и физика, но могат да показват хиляди образувания в реално време без заекване, което ги прави идеални за дим, огън, дъжд, искри, магически ефекти и други.

Има много параметри, които можете да настроите, за да постигнете тези ефекти и можете да получите достъп до тях, като хвърлите хайвера на система от частици под компонент редактор > избор на система от частици > отваряне на раздела на инспектора. Можете да промените размера, скоростта, посоката, въртенето, цвета и текстурата на всяка частица и да зададете повечето от тези параметри да се променят и с течение на времето.

Под стълкновение атрибут, ако го разрешите и зададете пространството за симулация свят ще получите частици, които ще се сблъскат с обекти в света, които могат да бъдат използвани за редица реалистични ефекти на частици, включително дъжд, движеща се вода и искри.

5. Пример: Основни елементи на играта

За този урок ще направим проста игра на Pong - нещо, което преди няколко пъти покриваме в „Направи си сам“:

  • Ардуино класически понг Как да пресъздадем класическата игра на понг с помощта на ArduinoPong беше първата в историята видеоигра, която достигна до масовия пазар. За първи път в историята концепцията за "видео игра" беше въведена в дома на семейството, благодарение на Atari 2600 -... Прочетете още
  • Arduino OLED Pong Ретро игри Arduino с OLED дисплейНякога се питахте колко работа е необходима, за да напишете свои собствени ретро игри? Колко лесно е Pong да кодира Arduino? Прочетете още

В този раздел ще преминем към подреждането на основните елементи - учебникът за сценарии ще дойде по-късно.

Първо, нека разбием играта на Pong на основните му компоненти. Първо, имаме нужда от две гребла и топка. Топката лети извън екрана, така че ще искаме механизъм за нейното нулиране. Ние също така искаме текстът да показва текущия резултат и за да ви покажем всички основни елементи на Unity, ще искаме ефект на частици, когато ударите топката. Цялата игра ще трябва да бъде драматично осветена.

Това се разпада на a предмет с топка (сфера), a spawner, две подпори за гребло с емитери за частици приложен, a 3D-текстово образувание, и a точкова светлина. За този урок ще използваме физическия материал по подразбиране подскачане, с скачайте комбинирайте настроен на умножете. Ето как изглежда настройката в десет екранни снимки:

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 4
Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 5

Първо, създайте a куб. опора за греблото.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 6

Намалете го по подходящ начин, дублирайте го, и поставете a сфера между греблата за топката.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 7

След това създайте a 3DText обект и мащаб и позиция правилно, променяйки размер на шрифта атрибут за получаване на по-малко пикселирано изображение.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 8

След това създайте две частици системи, изберете желаните характеристики и ги прикрепете към греблата.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 9
Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 10

След това ще искате да го направите позицията и завъртете камерата така че тя правилно рамкира сцената. Докато камерата е избрана, можете да видите малък преглед на изгледа на камерата в долния десен ъгъл.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 11

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

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 13
Програмиране на игра с единство: Наръчник за начинаещи единство програма програма 14

Ако натиснете играта, вече можете да видите основните елементи на нашата игра. Все още няма да направят нищо, но ще стигнем до това!

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 12

Сега, когато имаме тази настройка, ще говорим за това какво участва в изготвянето на тези елементи, за да направим игра.

6. Скриптиране в единството

След като сте прикачили скрипт към обект, можете да го преработите, като щракнете два пъти върху него в полето инспектор. Това се отваря MonoDevelop, средата за разработка по подразбиране за Unity. По същество, Monodevelop е текстов редактор с функции, специално оптимизирани за програмиране.

Ключовите думи и коментарите са подчертани в син и зелени в него се появяват числови стойности и низове червен. Ако сте използвали Затъмнение или други IDE, MonoDevelop е много подобен. Можеш натрупване вашите скриптове от редактора, за да проверите за синтактични грешки, като така:

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 15

Като цяло, за да накарате скрипта да взаимодейства с Unity, ще трябва да посочите елементи, които притежава обектът, който държи скрипта (можете да видите списък на тези елементи под инспектор раздела, когато е избран съответният обект). След това можете да извикате методи или да зададете променливи за всеки от тези елементи, за да въведете желаните от вас промени.

Ако искате скрипт върху обект да засегне свойствата на различен обект, можете да създадете празен GameObject променлива във вашия скрипт и използвайте инспектор за да го присвоите на друг обект в сцената.

Списък на елементите, които един обект може да има, е следният (взет от изгледа на инспектора на едно от нашите гребла в горния пример):

  1. Трансформирайте
  2. Куб (мрежест филтър)
  3. Кутия Collider
  4. Mesh Renderer

Всеки от тези аспекти на обекта може да бъде повлиян от скрипт. След това ще разгледаме как точно.

6.1 Преобразувайте

Функциите за преобразуване на GameObject в Unity контролират физическите параметри на този обект: неговите мащаб, неговото позиция, и е ориентация. Можете да получите достъп до тях от скрипт като този:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

В горните примери посочените променливи са от типовете, посочени в имената. Тук има няколко основни детайли: позицията и мащабът, както бихте очаквали, се съхраняват като Vector3s. Можете да получите достъп до х, Y, и Z компоненти на всеки (например, transform.position.y ви дава разстоянието на обект над нулевата равнина).

Въпреки това, за да се избегне гигантска брава, ротациите се обработват като Quaternions (четирикомпонентни вектори). Тъй като ръчно манипулирането на кватерниони е неинтуитивно, можете да манипулирате въртенията, използвайки ъглерови ъгли, като използвате Четворица. Ойлер метод като така:

transform.rotation = Кватернион. Ойлер (стъпка, прозяване, преобръщане);

Ако искате плавно да премествате обекти от едно място на друго, ще намерите Slerp метод за кватерниони и vector3s полезен. Slerp взема три аргумента - текущото състояние, крайното състояние и скоростта на промяна и плавно се интерполира между тях с дадената скорост. Синтаксисът изглежда така:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Предавач

Функциите за изобразяване в Unity ви позволяват да контролирате начина, по който повърхностите на реквизита са изобразени на екрана. Можете да преназначите текстурата, да промените цвета и да промените шейдъра и видимостта на обекта. Синтаксисът изглежда така:

renderer.enabled = невярно; renderer.material.color = нов цвят (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Повечето от тях имат доста ясни функции. Първият пример прави въпросния обект невидим: полезен трик в редица ситуации. Вторият пример дава нов RGB цвят (а именно зелено) на въпросния обект. Третата присвоява основната дифузна текстура на нова променлива Texture. Последният пример променя шейдъра на материала на обекта в ново определена променлива на шейдъра.

6.3 Физика

Единството идва с интегриран двигател на физиката - нещо, което физика пясъчни игри Smash, Drive & Build: 3 страхотни симулатора на физика за пясъчниците Прочетете още всички ползват. Това ви позволява да присвоите физическите свойства на обектите и да оставите детайлите от тяхната симулация да се обработват вместо вас. Като цяло, вместо да се опитвате да прилагате собствената си физика с помощта на учебник и системата за трансформиране, е по-просто и по-стабилно да използвате двигателя на физиката на Unity във възможно най-голяма степен.

Всички физически реквизити изискват ускорители. Самата реална симулация обаче се обработва от a абсолютно твърдо тяло, които могат да се добавят в инспектор видите. Ригидните тела могат да бъдат кинематичен или nonkinematic.

Кинематичните реквизити по физика се сблъскват с (и ефект) некинематични физически реквизити около тях, но не са засегнати от самия сблъсък. Статичните кинематични подпори са пословичните неподвижни обекти, а движещите се кинематични обекти са пословична неудържима сила (за записа, когато се сблъскат, те просто преминават през всяка други).

Отвъд това можете да регулирате ъгловото влачене на обекта (колко енергия е необходимо, за да го завъртите), да промените неговата маса, да диктувате дали е повлияно от гравитацията или не и да приложите сили към нея.

Примери:

rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = невярно; rigidbody.useGravity = true; абсолютно твърдо тяло. AddForce (transform.forward * 100);

Всичко това е доста обяснително. Единственото нещо, което трябва да се отбележи тук, е използването на transform.forward. Всички Vector3 имат три компонента (.forward файл, .up, и .right), свързани с тях, които могат да бъдат достъпни и да се въртят с тях (напред е посоката на синята стрелка в редактора). Най- transform.forward Ключовата дума е просто предния вектор за текущия обект с величина 1. Може да се умножи с поплавък, за да създаде повече сила върху обекта. Можете също да се позовавате transform.up и transform.rightи ги отричайте, за да получат обратните си промени.

6.4 Сблъсък

Често, когато изграждате игра, бихте искали сблъсък, който да доведе до някаква промяна в състоянието на кода ви, а не само физическа симулация. За това ще ви трябва метод за откриване на сблъсък.

Има необходима предварителна работа, необходима за откриване на сблъсъци в Unity. Първо, поне един от обектите при сблъсъка се нуждае от a некинематично твърдо тяло прикрепен към него. И двата обекта трябва да имат правилни колиери, зададени да не се задействат. Общата скорост и на двата обекта трябва да е достатъчно ниска, че те всъщност да се сблъскат, вместо просто да прескачат един през друг.

Ако имате всичко, за което сте се погрижили, можете да проверите за сблъсък, като поставите специален метод за откриване на сблъсък в скрипт, прикрепен към обекта, с който искате да проверите сблъсъка. Методът ще изглежда така:

void OnCollisionEnter (Collision other) {// направете нещата тук. }

Този метод ще се стартира автоматично през първия кадър, когато друг обект докосне вашия обект. Съществото на сблъсъка друг е препратка към ударения обект. Можете например да го направите gameobject, абсолютно твърдо тяло, и трансформиране характеристики за манипулирането му по различни начини. Докато OnCollisionEnter вероятно е най-разпространената функция, която ще използвате, можете също да използвате OnCollisionExit и OnCollisionStay (с иначе идентичен синтаксис и употреба), които се активират по време на първия кадър, когато спрете да се сблъсквате с обект и съответно по време на всеки кадър, който се сблъсквате с обект.

Понякога може да бъде полезно и да правите така наречените raycasting. При излъчване, безкрайно тънка линия (a лъч) се хвърля през света от някакъв произход, покрай някакъв вектор и, когато удари нещо, позицията и други детайли от първия сблъсък се връщат. Кодът за излъчване изглежда така:

RaycastHit хит; ако (физика Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

Това хвърля лъч от позицията на текущия обект по -Vector3.up (направо надолу) и свързва променливата хит към първия обект, с който се сблъсква. След като лъчът ви е ударил нещо, можете да получите достъп hit.distance за да се определи колко е далеч, или удари. GameObject за да манипулирате ударения обект.

Излъчвания като този могат да се използват за стрелците, за да се определи какво е насочено към пистолета, или за избор на обекти, когато камерата ги гледа, или за определени стилове на механика за движение.

6.5 Корекция на времето

Един важен фактор, който трябва да имате предвид, когато манипулирате обекти по този начин, е свързан с кадри. Без значение колко внимателно оптимизирате, кадрите винаги ще се променят и не искате скоростта на играта ви да се променя съответно. Ако някой друг управлява играта ви на по-бърз компютър, отколкото сте я разработили, не искате играта да работи с двойна скорост.

Начинът, по който коригирате това, е чрез умножаване на стойностите, които използвате, по времето, необходимо за изобразяване на последния кадър. Това става чрез използване Time.deltaTime. Това ефективно променя скоростта на всяка променлива, от която увеличавате всеки кадър промяна на кадър да се промяна в секундаи вероятно трябва да направите тази промяна във всяка стойност, която увеличавате или намалявате във всеки кадър.

6.6 Аудио източници и слушатели

Сега, когато разбрахме как да създаваме, изобразяваме и контролираме обекти, нека поговорим за другия смисъл, който компютърните игри могат да служат: а именно, звук. Unity поддържа два вида звуци: 2D и 3D звуци. 3D звуците варират силата на звука в зависимост от разстоянието и се изкривяват, докато се движат спрямо камерата; 2D звуци не.

2D звуците са подходящи за гласове и фонова музика, а 3D звуците се прилагат за звуци, генерирани от събития в света. За да промените дали звукът е 3D или не, изберете го в проект изглед, преминете към инспектор преглед и изберете подходящата опция от падащото меню, след което натиснете повторен внос бутон.

За да реално възпроизвеждате звука, ще трябва да прикачите приложение audiosource до опора (опора, от която искате звукът да произхожда, в случай на 3D звук). Тогава ще трябва да отворите audioclip и изберете вашия звуков файл.

Можеш да използваш myAudioSource. Пауза () и myAudioSource. Play () за да контролирате тези звукови файлове. Можете да регулирате поведението на отпадане, силата на звука и доплер изместване на звуците под инспектор раздел за аудиоизточника.

6.7 Вход

Игра, която не взема никакъв принос от потребителя, не е голяма игра. Има много различни видове вход, в които можете да четете, и почти всички от тях са достъпни чрез Вход и кодът обекти. Някои примерни входни изявления (които имат стойности, оценявани за всеки кадър) са по-долу.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Въвеждане. GetMouseButton (0); bool isPressingSpace = Въвеждане. GetKey (KeyCode). Space);

Функциите на тези редове са най-вече обясняващи. Използвайки тези три вида справочници за въвеждане, можете да реконструирате схемите за управление на повечето съвременни 3D компютърни игри.

6.8 Отстраняване на грешки в скрипт

Да речем, че скриптът не работи. Както казва добрият лекар, може да ви се случат бретон и закачалки. Ако има директни синтаксични грешки с вашия C #, играта обикновено отказва да се стартира при натискане на играта и се предоставят някои доста полезни съобщения за грешки, ако натрупване скриптите от редактора. Виж отдолу:

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 16

Тези грешки обикновено не са най-трудните за отстраняване. Това, което може да бъде по-проблематично, са фините семантични грешки, в които успешно сте написали файл, пълен с валиден C # - просто не един, който прави това, което сте мислили, че би. Ако имате една от тези грешки и имате проблеми с проследяването й, има няколко неща, които можете да опитате да подобрите ситуацията.

Първият е да спрете изпълнението на играта и да проверите конзолата. Можете да поставите на пауза играта, като кликнете върху пауза икона в горната средна част на редактора и след това изберете конзола от дъното на прозорец меню (или натискане Ctrl > изместване > ° С). Дори и да няма грешки, предупрежденията все още могат да помогнат да се дадат някои улики за това, което може да се обърка.

Ако това не работи, можете също да опитате да добиете представа за състоянието на вашия скрипт, като отпечатате състоянието на вътрешните променливи, за да потвърдите, че програмата прави това, което смятате, че прави. Можеш да използваш Debug. Дневник (низ) за да отпечатате съдържанието на низ в конзолата, когато изпълнението на програмата удари този ред. Като цяло, ако работите назад от това, което смятате, че трябва да се случва чрез нещата, които трябва да бъдат правейки това, в крайна сметка ще стигнете до момент, в който отпечатъците от грешки не правят това, което очаквате направя. Точно тук е вашата грешка.

7. Пример: Скрипт понг

За да изградим Pong, нека разделим играта в основните й елементи: имаме нужда от топка, която рикошира напред-назад между греблата при увеличаване скорост, имаме нужда от табло, което знае кога топките са преминали греблата и се нуждаем от механизъм за рестартиране на топката, когато това случва се. Добра първа стъпка ще бъде да добавите некинематично твърдо тяло към топката, две кинематични твърди тела към гребла, деактивирайте гравитацията за всички тях и задайте подходящ физически материал от стандартните активи (подскачане с скачайте комбинирайте настроен на умножете).

По-долу можете да видите сценария за бала с обяснителни коментари. Топката трябва да постигне някои основни цели: трябва да скача по сложен модел, винаги поддържайки движение по двете оси и то трябва да се ускорява с предизвикателно, но не невъзможно темпо в хоризонтала посока.

BallHandler.cs

След това трябва да скриптираме нашето гребло, което можете да видите по-долу. Греблото трябва да се движи нагоре и надолу в отговор на натискане на клавиши (но не извън определени граници). Също така трябва да задейства системата от частици, когато се сблъска с нещо.

PaddleHandler.cs

На следващо място, ние се нуждаем от вражески AI: нещо, което ще накара греблото на врага да проследи към топката с фиксирана скорост. За целта ще използваме Vector3.Slerp за максимална простота. Също така бихме искали същото поведение на частиците, което виждаме на собственото си гребло.

EnemyAI.cs

Накрая се нуждаем от скрипт, за да актуализираме таблото и да нулираме топката, когато тя излезе извън границите.

ScoreboardUpdater.cs

С приложените скриптове и попълнените референции, когато стартираме нашата игра на Pong, изживяваме геймплей!

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 18

Можеш изтеглете моята демонстрация на Pong, ако искате да видите всичко, което съм очертал в действие. Тя работи на Windows, Mac и Linux системи.

8. Проучване на документацията / Научете повече

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

Важен ресурс тук е Unity ScriptReference. ScriptReference е база данни за търсене, достъпна както за C #, така и за Javascript, която има списък на всяка команда и функция на Unity, с описания на техните функции и кратки примери за синтаксис.

Ако имате проблеми с редактора и интерфейса на Unity или просто като видео предпочитани видео уроци, има дълъг списък с висококачествени Видео уроци за единство Най-добрите 3D уроци за единство за начинаещиИскате да разработвате игри с Unity, но не знаете откъде да започнете? Опитайте един от тези страхотни уроци на Unity 3D днес. Прочетете още на разположение. По-обширен (но по-малко широк) текстови уроци за Unity също са достъпни от CatLikeCoding.

И накрая, ако имате въпроси извън обхвата на документацията или уроците, можете да зададете конкретни въпроси на отговори. Unity3d.com. Не забравяйте, че отговорите са дадени от доброволци, така че уважавайте времето им и първо потърсете базата данни, за да сте сигурни, че на въпроса ви вече не е отговорено.

9. Изграждане на вашата игра / компилиране към самостоятелно приложение

Когато сте създали нещо, с което се гордеете (или приключихте с клонирането на нашия леко умален пример за понг), е време да преместете играта си от редактора и я превърнете в нещо, което можете да публикувате в интернет и да принудите приятелите и семейството си играят. За да направите това, ще трябва да създадете самостоятелно приложение. Добрата новина е, че в Unity това е много, много лесно. Има обаче няколко потенциални хикакаля, за които бихте искали да внимавате.

За начало знайте, че можете да изградите само проект без грешки. За тази цел проверете дали конзолата е отворена, докато изграждате: има някои условия за грешка, които играта ще пренебрегне в редактора, но все пак ще прекрати опита за изграждане. Това само изхвърля съобщения за грешки в конзолата, без видими резултати на екрана, което може да бъде разочароващо, ако забравите да проверите. След като получите играта си за компилиране без грешки, можете да изберете Настройки за изграждане под досие меню или натиснете Ctrl > изместване
> B. Това ще доведе до прост диалог, който ви позволява да изградите играта си за няколко платформи.

Програмиране на игра с единство: Ръководство за начинаещи единство програма програма 17

Процесът от там е сам по себе си: изберете вашите опции и натиснете натрупване; играта ще ви подкани за директория, в която да инсталирате, и ще постави както изпълнимия, така и директорията с данни там. Тези два файла могат да бъдат компилирани и разпространени (просто се уверете, че не таксувате игра, изградена в демонстрацията на Unity, тъй като това нарушава условията за ползване).

10. Заключителни бележки

Както при всеки инструмент за разработка на игри, ключът към успеха с Unity е итеративното развитие. Трябва да градите с управляеми стъпки - бъдете амбициозни по всякакъв начин, но бъдете амбициозни на малки парчета и подредете онези парчета, такива, че дори и да изостанеш от крайната си амбиция, поне ще се навиеш с кохерентна продукт.

Вземете най-важните елементи отначало: имайте представа за вашето минимален жизнеспособен продукт, най-простото, най-голи кости, което бихте могли да създадете и все още да се чувствате така, сякаш сте постигнали нещо стойностно. Отидете до този минимален жизнеспособен проект, преди да преминете към по-големи амбиции.

Този урок ви дава силно начално място, но най-добрият начин да научите Unity е като изградите игра. Започнете да изграждате игра, попълвайте пропуски в знанията си, когато те се появят, и постепенният поток от знания ще ерозира нещата, които не знаете изненадващо бързо.

Ако сте прочели всичко това и сте малко затрупани от кодирането, необходимо с Unity, не забравяйте да проверите как да научете развитието на играта с Unity Learn Unity Learn е най-лесният начин да овладеете развитието на игратаИскате ли да започнете да разработвате свои собствени игри? Unity Learn е най-добрият и лесен начин да научите и овладеете това, което трябва да знаете. Прочетете още и също така прочетете нашето ръководство на как да правите видео игри без програмиране Как се правят видео игри без програмиранеИскате ли да направите видео игра, но не можете да кодирате? След това използвайте комплект за изграждане на видеоигри, който ви позволява да създавате игри, без да е необходимо кодиране! Прочетете още .

Единството е мощен инструмент и с малко проучване можете да създавате впечатляващи проекти с него по-бързо, отколкото може да очаквате. Кажете ни какво сте изградили в коментарите по-долу - ще се радваме да видим!

Писател и журналист със седалище в Югозапада, Андре гарантирано остава функционален до 50 градуса по Целзий и е водоустойчив до дълбочина от дванадесет фута.