Реклама

Изненађујућа карактеристика интернет економије је пораст индие видео игара. Након ексклузивног домена атељеа с троструким А бројевима од хиљаду човека, развијени су бројни сетови алата који су донијети модерне ресурсе за развој игара у руке појединаца или малих, ад-хоц колекција програмера и дизајнера. Претходно смо разговарали о томе најбоље индие игре 10 Индие игара је тако добро, да ћете заборавити да су уопште индиМеђутим, можда ће бити времена када желите нешто другачије од индие норме. Игра која прати индие вредности, али је рађена по квалитету по којем су познате врхунске ААА игре. Наслови као ... Опширније , зато обавезно проверите да ли имате инспирацију о томе шта се може постићи са алатима као што је Јединство.

Овај је водич доступан за преузимање као бесплатни ПДФ. Преузмите Програмирање игре с јединством: Водич за почетнике сада. Слободно копирајте и делите то са пријатељима и породицом.

Ови тимови за развој индие игара показали су окретност и толеранцију на ризик који им, у многим случајевима, омогућава да гурају иновације у гамеплаи брже од својих великих буџетских колега. Последњих година су премијерно представљени бројни шокантно успешни индие наслови, укључујући

instagram viewer
Минецрафт, Лимбо, и Супер Меат Бои, а чак и ако не морате вештине да правите такве игре, можете направите игру користећи Буилдбок Како направити видео игру за недељу дана користећи БуилдбокПостоји програм који развој игара чини невероватно лаким чак и за оне који немају апсолутно никаквог искуства у дизајнирању видео игара. Зове се Буилдбок. Ево зашто бисте требали да пробате. Опширније .

У брзо развијајућем пејзажу развоја индие игара, Јединство се појавила као нешто што је де-фацто стандард: ниска цена, једноставна употреба и широк сет функција чине га идеалним за брзи развој игара. Јединство је толико флексибилно да можете и да направите своје прилагођене контролере игара Како направити прилагођени контролер игре са Ардуино и ЈединствомДа ли сте икада желели да дизајнирате сопствени контролер за игре? Лакше је него што мислите! Опширније са мало ДИИ кнов хов!

Чак и велики студији попут ЦЦП (Девелоперс оф Еве Онлине) користите за брзо израђивање концепата игара. Унити нуди „гаме енгине у кутији“ - физички и рендеринг мотор са кукама за неколико скриптних језика, прилагодљив готово сваком жанру видеоигре.

Док Унити пружа визуелни уређивач за манипулацију окружењем игара, Унити није алат за креирање игара 'зеро програмирање'. Захтијева од вас да програмирате како бисте постигли резултате, али вам такође пружа много флексибилнији и снажнији алат него што би то могао сваки програм за прављење игара.

Јединство неће учинити посао за вас, али то знатно смањује баријеру за улазак. Почевши у потпуности од почетка са Ц ++ и ОпенГЛ-ом, могу проћи дани док не дође до тачке у којој се на екрану заправо нешто приказује. Коришћењем Унити-а потребно вам је око десет секунди. Јединство на брзе, интуитивне начине ставља основне елементе креирања игара у руке почетника програмера.

Данас ћу вас водити кроз све што требате да знате како бисте направили игру у Унитију, која је подељена на десет главних поглавља:

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

§2 - Инсталирање јединства

§ 3 - кратак увод у објектно оријентисану парадигму

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

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

§6 - Писање у јединству

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

§8 - Истраживање документације / учење више

§9 –Изградити своју игру / саставити на самосталној апликацији

§10-Завршне напомене

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

Унити има два основна укуса: про верзију и бесплатну верзију. Постоје број разлика, али, шире гледано, про верзија подржава мноштво визуелних побољшања (попут меких сенки у реалном времену и накнадна обрада) и велики број релативно мањих функција које су изузетно корисне за сложеније игре.

Уз то, за већину релативно једноставних игара које бисте можда желели да направите, бесплатна верзија Унитија је сасвим адекватна. У наставку ћемо детаљније разложити кључне разлике за оне који су заинтересовани.

1.1 Цене

Бесплатна верзија Унити-а је, наравно, бесплатна. Међутим, постоји неколико ограничења: бесплатна верзија Унити-а не може се лиценцирати ниједној компанији са годишњим приходима већим од $100,000. Иако су такве организације изван опсега овог водича, ако сумњате да бисте могли постати таква организација, вероватно је паметно доћи до верзије Про.

Про верзија Унити је $75 месец или $1500 за сталну лиценцу и нема ограничења у ономе што можете радити са играма креираним помоћу ње. На располагању је и 30-дневно бесплатно пробно раздобље које ћемо користити у овом водичу како бисмо вам пружили што потпунији преглед доступних функција. Доступна је и једногодишња студентска лиценца путем Студица за $129.

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

У бесплатној верзији Јединства нема пуно функција. Међутим, најважније разлике су следеће: бесплатној верзији Унити недостаје велики број могућности приказивања које то омогућавају боље изгледајуће игре бржег покретања (подршка за ЛОД, накнадна обрада простора на екрану, напредне сенке, меке сенке у стварном времену и одложени рендерирање). Такође му недостаје пуна Механизам анимациони системи неке АИ алате.

Опћенито, за сложене, велике пројекте или пројекте гдје је графичка учинковитост важна, про верзија је вриједна. Користим про верзију, јер развијам игре за виртуелну стварност за Оцулус Рифт Оцулус Рифт ПрегледВиртуелна стварност није нова, али је коначно приступачна и у оквиру наших спознаја. Након четири године и два развојна прототипа, стигло је коначно потрошачко издање Оцулус Рифт-а. Опширније , а подршка за накнадну обраду простора на екрану неопходна је за исправну интеракцију са слушалицама.

2. Инсталирање Унити-а

Јединство је директно инсталирати. Можете да преузмете извршну датотеку са унит3д.цом/гет-унити/довнлоад.

Након преузимања покрените га, а затим следите упутства за инсталацију. Када је инсталација завршена, појавиће се прозор под називом "активирај вашу Унити лиценцу". Потврдите избор у пољу „активирај бесплатну 30-дневну пробу Унити Про“, а затим „ОК“.

Честитам! Сада имате 30-дневно суђење Унити Про-а. Када пробно истекне, ако не желите да купите про верзију, можете прећи на бесплатну верзију и задржати свој постојећи садржај.

3. Кратки увод у објектно оријентисану парадигму

Пре него што започнемо са Јединством, важно је да мало пређемо на основе. Јединство подржава и једно и друго Ц # и ЈаваСцрипт за програмирање игара 7 језика за развој јединства игара: Који је најбољи?Желите започети развој игара у Унитију? Требаће вам познавање једног од ових језика који су компатибилни са Јединством. Опширније ; радићемо са Ц # за овај водич.

Прво, ако никада раније нисте програмирали, оставите овај туториал на страну и проведите неколико дана радећи кроз Мицрософт-ов Ц # Лангуаге Пример док се не осећате угодно користећи језик за једноставне задатке.

Ако желите нешто мало другачије од Ц # (али не нужно и језик који можете користити у Унитију), погледајте наш водич за шест најлакших програмских језика за почетнике 6 најлакших језика за програмирање за почетникеУчење програмирања подразумијева проналажење правог језика једнако колико и процес едификације. Ево првих шест најлакших програмских језика за почетнике. Опширније .

Ако сте раније програмирали на императивном или објектно оријентисаном језику као што је Ц или Јава, прекријте прајмер и упознајте се како се Ц # разликује од других језика које сте користили у прошлости. У сваком случају, не настављајте са туторијалом све док не будете осећали угодно решавање једноставних проблема са Ц # (на пример, ако бих питао да бисте написали програм који штампа првих стотину основних бројева, требало би да будете у могућности да га пишете без консултација Гоогле).

Најважнији концепт који овдје треба схватити је објектно оријентисана парадигма Одакле је „Објектно оријентисано“ програмирање добило своје име?Објектно оријентисан није само случајна буззворд коју чујете у програмским круговима. Постоји разлог иза имена - али шта? Придружите ми се док истражујем неке основе програмских концепата и објашњавам ... Опширније (скраћено као ООП). У објектно оријентисаним језицима програми се деле на функционалне јединице које се називају Објекти. Сваки објект има своје приватне варијабле и функције. Позване су функције специфичне за објект методе.

Идеја овде је модуларност: изолирањем сваког објекта и присиљавањем других објеката на интеракцију с њим помоћу његових метода можете смањити број могућих ненамјерних интеракција - и, проширењем, грешке. Такође можете да креирате објекте које касније можете поново користити без модификација. У Јединству ћете градити ове објекте и причврстити их игра ентитета (чијим понашањем ће они управљати).

Предмети су инстанци из часови: класа је само датотека која поставља дефиницију вашег објекта. Дакле, ако желите Моок објекта који обрађује АИ за непријатеља у вашој игри, ви бисте написали класу "Моок", а затим датотеку додали сваком непријатељском ентитету. Када покренете игру, сваки непријатељ ће добити копију објекта „Моок“.

Прилагање нове скрипте објекту изгледа овако:

Програмирање игре с јединством: Водич за почетнике Јединствена програмска игра 1

Први, одаберите објекат и иди до Инспекторе. Кликните на Додајте компоненту дугме.

Програмирање игре с јединством: Водич за почетнике Јединствена програмска игра 2

Иди на нова скрипта, унесите желено име и кликните креирати и додати.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 3

Сада имате нову скрипту коју можете да уредите двоструким кликом на њу!

Датотека класе изгледа овако:

коришћење УнитиЕнгине; јавна класа Моок: МоноБехавиоур {здравље приватног пловка; воид Старт () {здравље = 100; } воид Упдате () {иф (хеалтх> 0) {/ * Потражите играча ако на путу наиђете на играча, убијте га ако вас упуца, уклоните случајну количину здравља * /}} }

Разбијмо ово:

  • Коришћење УнитиЕнгине: Ова линија говори Ц # да желимо да користимо Унитијеве библиотеке, које нам омогућавају да се повежемо са механизмом игре Унити.
  • Јавна класа Моок: МоноБехавиоур:Ова линија декларише класу и њено име - Моок.
  • Здравље приватног пловка: Ово декларише варијаблу приватне класе (која се може мењати само из класе). Променљива је дата вредност у Почетак.
  • Воид Старт (): Овим се проглашава метода која се зове Почетак. Старт је посебан метод који се покреће само једном, када се игра у почетку покрене.
  • Ажурирање празнине (): Ажурирање је још једна посебна метода, која се покреће на сваком кадру. Овде ће ићи већина ваше логике игара.
  • // ако на путу наиђете на играча, убијте га: Ова линија је коментар (Ц # занемарује било који ред који започиње двоструком косом косом косом цртом). Коментари се користе да се подсетите шта конкретни битови кода раде. У овом случају, овај коментар се користи да би се заговарао сложенији блок кода који заправо чини оно што коментар описује.

Упоредо са Почетак и ажурирање, можете инстанцирати сопствене методе готово било којим именом. Међутим, методе које креирате неће се покренути ако се не позову. Прогласимо методу хипотетичке класе која се зове аддТвоНумберс који додаје два броја заједно:

публиц флоат аддТвоНумберс (флоат а, плутај б) {ретурн а + б; }

Ово проглашава јавну (доступну другим објектима) методу која враћа флоат, названу аддТвоНумберс, који као улаз улази (која се зове два плова) а и б). Затим враћа зброј две вредности као свој излаз.

Позивање ове методе из исте класе (рецимо, изнутра ажурирање) изгледа овако:

резултат флоат = аддТвоНумберс (1, 2);

Позивање методе из друге класе је слично:

инстанца аддТвоНумберс; флоат резултат = инстанце.аддТвоНумберс (1, 2);

Опет, ово само ствара инстанцу наше класе, приступа одговарајућој методи и пуни је бројевима које желимо да додамо, а затим ускладишти резултат у резултат. Једноставно.

Ако је ваша скрипта везана за објект који има посебна својства (попут емитер честица) којима се не може приступити под нормалним сетом ГамеОбјецт параметара, можете одабрати да га третирате као другу врсту ентитета игре користећи тхе тхе ГетЦомпонент метод.

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

ГетЦомпонент().Игра();

Ако вам било шта од тога није познато, вратите се и прођите кроз Ц # пример. У току ће вам уштедјети много фрустрације.

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

У овом одељку проћи ћемо кроз основну механику мотора Унити. Радни ток у Јединству иде овако:

  1. Креирајте ентитет који ће служити улогу у игри (празно) ГамеОбјецтс може се користити за апстрактне логичке задатке).
  2. Запишите или пронађите датотеку класе и додајте је ентитету као скрипту (користећи Додајте компоненту дугме у инспекторе поглед.
  3. Трцати > тест > дебуг > понављање док не ради и пређе на следећи елемент игре.

Јединство долази са бројним картицама основног приказа које се могу излагати на различите начине према укусу корисника. Велика петорка су:

  1. Игра: приказује покренуту инстанцу игре са којом можете комуницирати и тестирати.
  2. Сцена: пружа статичку верзију свет игара.
  3. Инспектор: омогућава вам да модификујете поједине ентитете у свету игара тако што ћете их одабрати у уредник картицу.
  4. Пројекат: омогућава вам да прегледате датотеке пројекта и превучете моделе, материјале и друге ресурсе у поље уредник да бисте их поставили у свет игре.
  5. Хијерархија: ова картица приказује све предмете у свету, омогућавајући вам да пронађете удаљене објекте у сцени и родитељске јединице једни другима кликом и превлачењем.

Погледајте дијаграм испод за локације свих ових ствари:

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 0

4.1 Јединствени ентитети

4.1.1 Мреже

Мреже су начин 3Д геометрија представља се у Јединству. Можете или користити уграђен Унити примитивни предмете (коцке, сфере, цилиндре итд.) или увезите своје 3Д моделе из пакета за моделирање као што је Блендер Почетак рада с блендером: 7 фантастичних водича за новорођенче3Д моделирање је одличан начин за вежбање креативности, истовремено у контакту са вашом техничком страном. Ево неколико феноменалних бесплатних туторијала. Опширније или Маја Учење Маја 2016: Где да започнемоМаиа је алат који се користи за 3Д анимацију, али долази са невероватно стрмом кривуљом учења. Који је добар наставни материјал ту? Опширније . Унити подржава разне 3Д формате, укључујући .фбк, и .3дс.

Основни алати за управљање мрежама су тастери за скалирање, ротацију и превод у горњем левом углу интерфејса. Ови тастери додају контролне иконе моделима у приказу уређивача, који се затим могу користити за манипулирање њима у простору. Да бисте променили текстуре или физичке особине објекта, одаберите их и користите инспекторе поглед на анализу материјал и круто тело елементи.

4.1.2 Елементи ГУИ-ја

Традиционални ГУИ-ови и текст могу се приказати помоћу тастера Текст ГУИ-ја и тхе ГУИ Тектуре ГамеОбјецтс у уређивачу. Међутим, робуснији и реалнији начин за руковање елементима УИ је употреба 3Д текст и Куад ГамеОбјецтс (с прозирним текстурама и неосветљеним прозирним сјенилом) за постављање ХУД елемената у свијет игре као цјелине.

У хијерархија погледајте, ови елементи играња могу се превући на главну камеру како би се деца обезбедила да се померају и окрећу камером.

Елементи ГУИ (текст и текстуре) могу прилагодити своју величину и скали помоћу одговарајућих поља на картици инспектора.

4.1.3 Материјали

Материјали су комбинације текстура и схадерс Објашњено пет важних услова за играње на рачунаруАко играте игру на конзоли, за вас се обрађују технички детаљи. Неки играчи то више воле, али ПЦ играчи често уживају већи степен контроле над очима игре ... Опширније , и може се превући директно на објекте игре са картице пројекта. Велики број шејдера долази са Унити Про и можете прилагодити текстуру везану уз њих помоћу картице инспектора за објект на који су примењени.

Да бисте увезли текстуру, претворите је у .јпг, .пнг, или .бмп, и превуците је у средства директоријум у директорију пројекта Унити (који се појављује у Моји документи подразумевано). Након неколико секунди, у уређивачу ће се појавити трака за учитавање. Када се заврши, моћи ћете да пронађете слику као текстуру испод пројекат картицу.

4.1.5 Светла

Светла су ГамеОбјецтс који пројектују светлост. Ако на вашој сцени нема светла, сви полигони су цртани на истом нивоу осветљења, што свету даје равни, испрани изглед.

Осветљења се могу поставити, закренути и имати неколико унутрашњих карактеристика које можете прилагодити. Тхе интензитет клизач контролише јачину светлости и домет контролише колико брзо избледи.

Смернице у призор приказују вам максимални домет осветљења. Играјте се са обе поставке да бисте постигли жељени ефекат. Такође можете да подесите боју светлости, узорак (колачић приказано на површини светлост је уперена и каква се бљескалица појављује на екрану када се директно гледа светлост. Колачић се може користити за лажирање реалистичнијих образаца светлости, стварање драматичних лажних сенки и симулирање пројектора.

Три главне врсте светлости су место, тачка, и усмерени.

Спот светла имати локацију у 3Д простору и пројицирати светлост само у једном правцу у конусу променљивог угла. Ово је добро за лампице, рефлекторе и, генерално, омогућава вам прецизнију контролу осветљења. Спот светла могу да бацају сенке.

Тачка светла имају локацију у 3Д простору и равномерно бацају светлост у свим правцима. Тачкаста светла не бацају сенке.

Усмерна светлаКоначно, користе се за симулацију сунчеве светлости: они пројектују светлост у правцу као да је бесконачно далеко. Усмерена светла утичу на сваки предмет у сцени и могу стварати сенке.

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

А Систем честица је ГамеОбјецт која ствара и контролише стотине или хиљаде честица истовремено. Честице су мали, оптимизовани 2Д објекти приказани у 3Д простору. Системи честица користе поједностављено приказивање и физику, али могу да прикажу хиљаде ентитета у реалном времену без муцања, што их чини идеалним за дим, ватру, кишу, искре, магичне ефекте и још много тога.

Постоји пуно параметара које можете прилагодити да бисте постигли ове ефекте, а можете им приступити тако што ћете мријестити систем честица испод едитор за компоненте > избор система честица > отварање картице инспектора. Можете да промените величину, брзину, смер, ротацију, боју и текстуру сваке честице и подесите већину тих параметара да се мењају током времена.

Под судар атрибута, ако га омогућите и поставите простор за симулацију на свет добићете честице које ће се сударити са предметима у свету, а који се могу користити за бројне реалне ефекте честица, укључујући кишу, покретну воду и искре.

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

За овај туториал ћемо направити једноставну игру Понг - нешто што смо већ неколико пута покривали у „уради сам“:

  • Ардуино Цлассиц Понг Како поново створити класичну игру понг користећи АрдуиноПонг је прва видео игрица која је стигла на масовно тржиште. Први пут у историји, концепт "видео игре" уведен је у породични дом, захваљујући Атари 2600 -... Опширније
  • Ардуино ОЛЕД Понг Ардуино Ретро играње са ОЛЕД екраномДа ли сте се икада питали колико је потребно да напишете своје ретро игре? Колико је Понг лако кодирати Ардуино? Опширније

У овом одељку ћемо прећи на сређивање основних елемената - водич за скрипте доћи ће касније.

Прво, разградимо игру Понг на његове основне компоненте. Прво су нам потребна два весла и лопта. Лопта лети изван екрана, па ћемо желети механизам да је ресетује. Такође желимо да текст прикаже тренутни резултат, а ради приказа свих основних елемената Јединства, ми ћемо желети лепе ефекте честица када ударите лопту. Цела игра мораће бити драматично осветљена.

То се распада на лоптасти предмет (сфера), а спавнер, два подупирача за весло емитери честица у прилогу, а 3Д текстуални ентитет, и тачка светла. За овај туториал ћемо користити подразумевани физички материјал одскочити, са комбинирати одскочити подешен на множе се. Ево како изгледа подешавање, у десет снимака екрана:

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 4
Програмирање игре с јединством: Водич за почетнике Јединствена програмска игра 5

Прво направите коцка проп за весло.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 6

Прикладно га скалирајте, дуплирајте, и стави сфера између лопатица за лопту.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 7

Затим направите 3ДТект објект и Скала и положај тачно, мењајући фонт сизе атрибут да добијете мање пикселирану слику.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 8

Затим створите две системи честица, одаберите карактеристике које желите и причврстите их на весла.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 9
Програмирање игре с јединством: Водич за почетнике Јединствена програмска игра 10

Затим ћете то желети позиционирајте и окрените камеру тако да правилно поставља оквир. Док је одабрана камера, у доњем десном углу можете видети мали приказ приказа камере.

Програмирање игре с јединством: Водич за почетнике Јединствена програмска игра 11

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

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 13
Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 14

Ако сте погодили игру, сада можете видети основне елементе наше игре. Још ништа неће учинити, али ми ћемо доћи до тога!

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 12

Сада када смо поставили то подешавање, разговараћемо о томе шта је све укључено у писање ових елемената да би се направила игра.

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

Након што на објект прикључите скрипту, можете је прегледати двоструким кликом на њу у пољу инспекторе. Ово се отвара МоноДевелоп, подразумевано развојно окружење за Унити. У основи, Монодевелоп је уређивач текста са карактеристикама посебно оптимизованим према програмирању.

Кључне речи и коментари су истакнути у Плави и зелен, а нумеричке вредности и низови се појављују у црвено. Ако сте користили Помрачење или других ИДЕ-а, МоноДевелоп је врло сличан. Можете градити ваше скрипте из уређивача да бисте проверили да ли постоје грешке у синтакси, као што је:

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 15

Уопште, како бисте вашу скрипту довели у интеракцију са Унити-ом, мораћете да референцирате елементе које поседује објект који држи скрипту (списак тих елемената можете видети под инспекторе кад одаберете одговарајући објект). Затим можете позвати методе или поставити променљиве за сваки од ових елемената да бисте извршили жељене промене.

Ако желите да скрипта на објекту утиче на својства другог објекта, можете да направите празан ГамеОбјецт променљиву у вашем скрипту и користите инспекторе да га доделите другом објекту у сцени.

Листа елемената које предмет може имати је сљедећа (преузета из прегледа инспектора једног од наших весла у горњем примјеру):

  1. Преобразити
  2. Коцка (мрежасти филтер)
  3. Бок Цоллидер
  4. Месх Рендерер

На сваки од ових аспеката објекта може се утицати из сценарија. Затим ћемо погледати како тачно.

6.1 Трансформирати

Функције трансформације за ГамеОбјецт у Јединству контролишу физичке параметре тог објекта: његов Скала, његово положај, и његове оријентација. Можете им приступити из скрипте попут ове:

трансформ.поситион = невПоситионВецтор3; трансформ.ротатион = невРотатионКуатернион; трансформ.лоцалСцале = невСцалеВецтор3;

У горњим примерима именоване променљиве су од типова наведених у именима. Овдје је неколико кључних детаља: положај и размјера се, као што бисте и очекивали, похрањују као Вецтор3с. Можете приступити Икс, И, и З њихове компоненте (на пример, трансформ.поситион.и даје удаљеност објекта изнад нулте равни).

Међутим, да се избегну гимбал лоцк, ротацијама се рукује као Куатернионс (четворокомпонентни вектори). Пошто је ручна манипулација квартерионима неинтуитивна, можете манипулирати ротацијама помоћу еулеријских углова помоћу Куатернион Еулер метода попут:

трансформ.ротатион = Куатернион. Еулер (нагиб, зијевање, превртање);

Ако желите да се објекти несметано премештају са једног места на друго, пронаћи ћете их Слерп метода за куатернионс и вецтор3с корисна. Слерп узима три аргумента - тренутно стање, крајње стање и брзину промене, и глатко интерполира између њих датој брзини. Синтакса изгледа овако:

трансформ.поситион = Вецтор3.Слерп (стартПоситионВецтор3, невДестинатионВецтор3, 1);

6.2 Рендерер

Функције приказивања у Унитиу омогућавају вам контролу начина на који су површине реквизита приказане на екрану. Можете поново доделити текстуру, променити боју и променити сенку и видљивост објекта. Синтакса изгледа овако:

рендерер.енаблед = лажно; рендерер.материал.цолор = нова боја (0, 255, 0); рендерер.материал.маинТектуре = миТектуре; рендерер.материал.схадер = невСхадер;

Већина њих има прилично јасне функције. Први пример чини предметни предмет невидљивим: користан трик у бројним ситуацијама. Други пример додељује нови РГБ боја (наиме, зелено) предметног објекта. Трећа додељује главној дифузној текстури новој променљивој Тектуре. Последњи пример мења схадер материјала објекта у ново дефинисану промену схадер-а.

6.3 Физика

Јединство долази са интегрисаним мотором физике - нечим тим игре из физике Смасх, Дриве & Буилд: 3 феноменална физичка симулатора песка Опширније сва употреба. Ово вам омогућава да доделите физичка својства објеката и допустите да се детаљи њихове симулације обрађују за вас. Уопште речено, уместо да покушавате да примените сопствену физику користећи уџбеник и систем трансформације, једноставније је и робусније у највећој могућој мери користити мотор физике Унитиа.

Сви физички реквизити захтијевају судара. Међутим, стварном симулацијом управља а круто тело, која се може додати у инспекторе поглед. Крута тела могу бити кинематски или нонкинематиц.

Кинематички физички реквизити сударају се са (и ефектом) некинематским физичким реквизитима око њих, али на њих не утиче сам судар. Статички кинематички реквизити су пословично непокретни објекти, а покретни кинематски објекти су пословична незаустављива сила (за запис, када се сударају, једноставно пролазе кроз сваку друго).

Поред тога, можете подесити угаоно повлачење предмета (колико енергије треба да се заврти), променити његову масу, диктирати да ли је на њега утицала гравитација или не и применити на њу силе.

Примери:

ригидбоди.ангуларДраг = 0.1ф; ригидбоди.масс = 100; ригидбоди.исКинематиц = лажно; ригидбоди.усеГравити = труе; круто тело. АддФорце (трансформ.форвард * 100);

Све су то прилично саморазумљиве. Једино што овде треба приметити је употреба трансформ.форвард. Све Вецтор3 имају три компоненте (.напријед, .уп, и .јел тако) повезана са њима, којима се може приступити и ротира се са њима (напред је правац плаве стрелице у уређивачу). Тхе трансформ.форвард кључна реч је једноставно предњи вектор за тренутни објект величине 1. Може се множити пловком како би се створила већа сила на објект. Такође се можете упутити трансформ.уп и трансформ.ригхт, и негирајте их да добију преокрете.

6.4 Судар

Често, када правите игру, желите да судар резултира неком променом стања вашег кода, а не само физичком симулацијом. За ово ће вам требати метода детекције судара.

Постоји потребна количина припремног рада за откривање судара у Јединству. Прво, најмање један објекат у судару треба: а некинематски крути део везан за њега. Оба објекта морају имати исправне судараче, постављене на нон-окидаче. Укупна брзина оба објекта мора бити довољно мала да се они стварно сударају, уместо да једноставно прескачу једни преко других.

Ако сте се побринули за све то, можете да проверите да ли се судар ставите у скрипту приложену посебну методу детекције судара у објект са којим желите да проверите сударање. Метода ће изгледати овако:

воид ОнЦоллисионЕнтер (Цоллисион отхер) {// направите ствари овде. }

Ова метода ће се аутоматски покренути током првог кадра који други предмет додирне ваш објекат. Ентитет судара друго је референца на предмет који сте погодили. Можете се, на пример, позивати на њу гамеобјецт, круто тело, и преобразити карактеристике да се њиме манипулише на различите начине. Док ОнЦоллисионЕнтер је вероватно најчешћа функција коју ћете користити, а такође можете да је користите ОнЦоллисионЕкит и ОнЦоллисионСтаи (са иначе идентичном синтаксом и употребом), који се активирају током првог кадра да се зауставите са сударањем објекта и током сваког кадра који се судара са објектом.

Понекад, такође може бити корисно радити оно што се зове зрачење. Код емитирања, бесконачно танка линија (а зрак) избацује се кроз свет са неког порекла, дуж неког вектора, а када погоди нешто, враћају се положај и други детаљи првог судара. Код за радиотелевизију изгледа овако:

РаицастХит хит; ако (физика. Раицаст (трансформ.позиција, -Вектор3.уп, погодак)) {флоат дистанцеТоГроунд = хит.дистанце; }

Ово баца зрак из положаја тренутног објекта дуж -Вецтор3.уп (равно доле), и повезује променљиву хит на први објекат са којим се судара. Једном када је ваш зрак погодио нешто, можете приступити хит.дистанце да се утврди колико је далеко, или хит. ГамеОбјецт да манипулишете предметом који сте погодили.

Рејмови попут ове могу се користити за пуцаче да одреде на шта је пушка уперена, или за одабир предмета када их камера гледа, или за одређене стилове механике покрета.

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

Један важан фактор који треба имати на уму када на овај начин манипулирате предметима број слика. Без обзира колико пажљиво оптимизирали, оквири ће увек варирати и не желите да се брзина игре у складу са тим разликује. Ако неко други води вашу игру на бржем рачунару него што сте је развили, не желите да се игра двоструком брзином.

Начин на који то исправите јесте множењем вредности које користите у времену потребном за приказивање последњег оквира. То се врши коришћењем Тиме.делтаТиме. Ово ефективно мења брзину било које променљиве из које повећавате сваки кадар промена по кадру до промена у секунди, и вероватно би требало да промените било коју вредност коју повећавате или смањујете у сваком оквиру.

6.6 Аудио извори и слушаоци

Сада када смо описали како креирати, рендерирати и управљати објектима, разговарајмо о другом смислу који рачунарске игре могу послужити: наиме, звук. Јединство подржава две врсте звука: и звуци. 3Д звукови варирају јачину звука у зависности од растојања и изобличују се како се крећу у односу на камеру; 2Д звуци не.

2Д звуци су погодни за глас и позадинску музику, а 3Д звуци се примењују на звукове генериране догађајима у свету. Да бисте променили да ли је звук 3Д или не, изаберите га у менију пројекат поглед, пребаците се на инспекторе погледајте и изаберите одговарајућу опцију из падајућег менија, а затим притисните реимпорт дугме.

Да бисте заиста репродуковали звук, мораћете да приложите прилог аудиосоурце до пропртве (подршка коју желите да звук потиче, у случају 3Д звука). Тада ћете морати да отворите аудиоцлип поље и одаберите звучну датотеку.

Можете користити миАудиоСоурце. Паусе () и миАудиоСоурце. Игра() за контролу тих звучних датотека. Можете подесити понашање погрешака, јачину звука и доплерско пребацивање звукова испод инспекторе картицу за аудио извор.

6.7 Унос

Игра која не узима било какав унос од стране корисника није велика игра. Постоји пуно различитих врста улаза које можете читати, а готово сви су доступни путем Улазни и Кључ код објеката. Неке узорке уноса узорака (које имају вредности процењене у сваком оквиру) су доле.

Вецтор3 моусеПос = Инпут.моусеПоситион; боол исЛефтЦлицкинг = Унос. ГетМоусеБуттон (0); боол исПрессингСпаце = Унос. ГетКеи (КеиЦоде). Размак);

Функције ових линија углавном су саморазјашњене. Помоћу ове три врсте улазних референци можете реконструисати схеме управљања већине модерних 3Д рачунарских игара.

6.8 Отклањање погрешака скрипте

Рецимо да скрипта не функционише. Као што добар доктор каже, могу вам се догодити пипци и капути. Ако постоје јасне синтаксичке грешке са вашим Ц #, игра ће углавном одбијати да се покрене када притиснете игру, а пружају се и прилично корисне поруке о грешкама ако градити скрипте из уређивача. Види доле:

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 16

Ове грешке обично није најтеже исправити. Оно што може бити проблематичније су суптилне семантичке грешке у које сте успешно написали датотеку пуну валидних Ц # - само што није оно што ради оно што сте мислили да хоће. Ако имате неку од ових грешака и имате проблема са њеним праћењем, можете покушати побољшати ситуацију.

Прво је паузирање извршења игре и проверавање конзоле. Игру можете паузирати кликом на икону пауза икону у горњем средњем делу уређивача, а затим одабир конзола са дна прозор менија (или притиском на Цтрл > Смена > Ц). Чак и ако нема грешака, упозорења и даље могу помоћи да се дају трагови шта би могло поћи по злу.

Ако то не успије, можете покушати да стекнете и неку идеју о стању скрипте тако што ћете штампати стање унутрашњих променљивих да бисте потврдили да програм ради оно што мислите да ради. Можете користити Дебуг. Дневник (стринг) да бисте исписали садржај низа на конзоли када извршење програма погоди ту линију. Генерално, ако радите уназад од онога што мислите да би се требало одвијати кроз ствари које би требале бити чинећи то, на крају ћете стићи до точке када отисци на погрешци не раде оно што од њих очекујете урадити. Ту је ваша грешка.

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

Да бисмо изградили Понг, хајде да разградимо игру на њене суштинске елементе: потребна нам је лопта која се поново и назад креће између весла и повећава се брзина, потребна нам је табла са таблом која зна када су кугле прошле весла и потребан нам је механизам за поновно покретање лопте када је то дешава се. Добар први корак би био да у лоптицу додате не-кинематска крута тела, два кинематичка крута тела весла, онеспособити гравитацију за све њих и доделити одговарајући физички материјал из стандардних средстава (одскочити са комбинирати одскочити подешен на множе се).

Испод можете погледати скрипту за лопту са објашњењима. Лопта треба да постигне неке основне циљеве: треба одскакати у компликованом обрасцу, увек одржавајући кретања на обе осе, и требало би да убрзава изазовним, али не и немогућим темпом у хоризонталном смеру правац.

БаллХандлер.цс

Даље, морамо да скриптирамо своје весло, које можете видети доле. Весло се мора померати горе-доле као одговор на притиске тастера (али не ван одређених граница). Такође мора да покрене систем честица када се судари са нечим.

ПаддлеХандлер.цс

Затим нам треба непријатељски АИ: нешто због чега ће непријатељево весло пратити фиксну брзину ка лопти. За то ћемо користити Вецтор3.Слерп за максималну једноставност. Свидело нам се исто понашање честица које видимо и на свом веслу.

ЕнемиАИ.цс

Коначно, потребан нам је сценариј за ажурирање таблице и ресетовање лопте када изађе ван границе.

СцоребоардУпдатер.цс

Са приложеним скриптама и попуњеним референцама, када покрећемо нашу игру Понг, доживљавамо гамеплаи!

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 18

Можете преузми мој Понг демо, ако желите да видите све што сам описао у акцији. Ради на Виндовс, Мац и Линук системима.

8. Истраживање документације / учење више

Јединство је сложен мотор са много више функција него што би то могло бити обухваћено водичем овог стила, и то је пре него што укључите широку палету (бесплатних и комерцијалних) проширења Унитија доступних на интернет. Овај водич ће вам пружити снажно почетно место за развој игре, али самообразовање је важна вештина у било којем подухвату, и двоструко више овде.

Кључни ресурс овде је Јединство СцриптРеференце. СцриптРеференце је база података која се може претраживати и доступна је за Ц # и Јавасцрипт која има листу сваке наредбе и функције Унити-а, са описима њихових функција и кратким примерима синтакса.

Ако имате проблема са уређивачем и интерфејсом Унитиа или једноставно волите видео туторијале по питању, постоји дугачак списак висококвалитетних Видео туторијали за јединство Најбоље Јединствене 3Д подуке за почетникеЖелите да развијете игре са Унити-ом, али не знате одакле започети? Испробајте један од ових феноменалних туторијала Унити 3Д данас. Опширније на располагању. Опсежнији (али мање широк) уџбеници текста за јединство такође су доступни од ЦатЛикеЦодинг.

Коначно, ако имате питања која превазилазе документацију или туторијале, можете поставити одређена питања на одговори. Унити3д.цом. Имајте на уму да одговоре дају волонтери, па поштујте њихово вријеме и прво претражите базу података да бисте били сигурни да на ваше питање још није одговорено.

9. Израда игре / компилације до самосталне апликације

Када сте направили нешто на шта сте поносни (или сте завршили са клонирањем нашег примера мало понг Понг-а за праксу), време је да преместите игру из уређивача и претворите је у нешто што можете објавити на интернету и натерати своје пријатеље и породицу игра. Да бисте то учинили, мораћете да направите самосталну апликацију. Добра вест је да је у Јединству то врло, веома лако. Међутим, постоји неколико потенцијалних штуцање за које бисте желели да будете опрезни.

За почетак, знајте да можете градити само пројекат без грешке. У том циљу, будите сигурни да ли је конзола отворена током прављења: постоје неки услови за грешке које ће игра занемарити у уређивачу, али ће и даље прекинути покушај израде. Ово пушта само поруке о грешци на конзолу, без видљивих резултата на екрану, што може бити фрустрирајуће ако заборавите да проверите. Након што добијете игру за компајлирање без грешака, можете одабрати Направите подешавања под Филе или притисните Цтрл > Смена
> Б. Ово ће приказати једноставан дијалог који омогућава изградњу игре за неколико платформи.

Програмирање игре са јединством: Водич за почетнике Јединствена програмска игра 17

Процес одатле је сам по себи разумљив: изаберите своје опције и притисните градити; игра ће вас питати за директоријум на који ћете се инсталирати и тамо ће ставити и извршни и дата директориј. Ове две датотеке се могу компримирати и дистрибуирати (само припазите да не наплаћујете игру изграђену у Унити демо демо-у, јер се тиме крше услови услуге).

10. Завршне белешке

Као и код сваког алата за развој игара, кључ успеха са Јединством је итеративни развој. Морате градити у управљивим корацима - будите амбициозни у сваком случају, али будите амбициозни у малим комадима и уредите се ти комадићи такви да ће вам, чак и ако вам недостаје крајња амбиција, бар мало припасти кохерентан производ.

Прво набавите најважније елементе: имајте на уму своје минимално одржив производ, најједноставнија и најгора кост коју бисте могли створити и још увек осећате као да сте постигли нешто вредно. Дођите до тог најмање одрживог пројекта пре него што кренете ка већим амбицијама.

Овај туториал вам даје чврсто почетно место, али најбољи начин да научите Јединство је изградња игре. Започните изградњу игре, попуните празнине у знању како настају, а постепени проток знања ће брзо избрисати оно што не знате изненађујуће брзо.

Ако сте прочитали све ово и мало вас преплави кодирање потребно за Унити, провјерите како да научите развој игара помоћу Унити Леарн Јединство је учење најлакши начин за свладавање развоја игараЖелите да започнете развој сопствених игара? Јединство учења је најбољи и најлакши начин да научите и савладате оно што требате да знате. Опширније и такође прочитајте наш водич о како направити видео игре без икаквог програмирања Како направити видео игре без икаквог програмирањаЖелите да направите видео игру, али не можете да је кодирате? Затим користите комплет за изградњу видео игара који вам омогућава да правите игре без захтеваног кодирања! Опширније .

Јединство је моћан алат и уз мало истраживања можете с њим правити импресивне пројекте брже него што то можда очекујете. Јавите нам шта сте сачинили у коментарима испод - волели бисмо да видимо!

Писац и новинар са југозапада, Андре је загарантовано да ће остати функционалан до 50 степени Целзијуса, а водоотпоран је до дубине од дванаест стопа.