Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Контролер карактера може вам помоћи да примените једноставну физику покрета у игри.

Унити3Д контролерима карактера можете приступити из неколико углова. Ако користите библиотеку са моћним класама и функцијама, креирање контролера карактера заснованог на физици може бити забавно место за почетак развоја ваше игре.

Корак 1: Направите сцену са играчем и објектима терена

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

3Д равни објекат за терен

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

Модел Цубе Објецт Плаиер

Затим, време је да додате коцку на сцену која ће деловати као модел играча. Кликните десним тастером миша унутар окна хијерархије, пређите мишем преко 3Д објекати изаберите Цубе из падајућег менија. Поставите нову коцку тако да седи изнад равни коју сте такође додали. Такође морате да додате компоненту крутог тела да бисте од коцке направили физички објекат.

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

Можете наћи бесплатна средства Унити на мрежи да побољшате свој пројекат.

Камера из трећег лица

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

Брзи тест

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

Корак 2: Подесите Ц# датотеку

Сада је време да направите Ц# датотеку како бисте могли да почнете да програмирате неки покрет. Идите у одељак Пројекат, кликните десним тастером миша, задржите показивач миша изнад Креирај и изаберите Фолдер са листе. Именујте фасциклу Скрипте или нешто слично.

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

Користећи Систем. Цоллецтионс;
Користећи Систем. Збирке. Општи;
Користећи УнитиЕнгине;

јавностикласаЦхарацтер_Цонтрол: МоноБехавиоур {
празнинаПочетак() {
}

празнинаажурирање() {
}
}

Корак 3: Користите Ц# за креирање кретања унапред и уназад са брзином

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

јавности Ригидбоди ригидбоди;
јавностипловак брзина;

Затим, време је да додате једну линију кода функцији Старт. Ово користи декларацију ГетЦомпонент да додели компоненту ригидбоди Цубе променљивој ригидбоди коју сте креирали.

празнинаПочетак() {
ригидбоди = ГетЦомпонент < Ригидбоди > ();
}

Сада можете додати неки код који ће покренути ваш модел играча. Овај код је леп и једноставан; потребне су вам само две иф изјаве, једна за кретање унапред и једна за кретање уназад. Можете користити унос. ГетКеи да одредите када се тастер притисне. У овом случају, тражите притиске на тастере В и С.

Притиском на било који од ових тастера додаје се сила крутом телу коцке помоћу крутог тела. АддФорце. Можете израчунати правац и брзину додане силе тако што ћете помножити њену позицију З-осе (трансформ.напред) променљивом брзине. Не постоји класа трансформ.бацквард коју можете користити за кретање уназад, али то се постиже множењем трансформ.форвард са -1.

ако (Улазни. ГетКеи("в")) {
круто тело. АддФорце (трансформ.форвард * брзина);
}

ако (Улазни. ГетКеи("с")) {
круто тело. АддФорце((трансформ.форвард * -1) * брзина);
}

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

Сада можете да користите дугме Плаи да покренете игру и тестирате свој код. Али чекај! Постоји проблем; ваша коцка ће се превртати него да се креће право напред. Вратите се до инспектора коцке, пронађите компоненту Ригидбоди и означите поља за замрзавање ротације на Кс и З оси пре него што поново покренете игру. Сада би требало да ради.

Корак 4: Користите Ц# да бисте направили окретање лево и десно са обртним моментом

За разлику од кретања уназад и напред, окретање вашег модела Цубе плејера захтева силу која се зове обртни момент. За ово вам је потребна друга променљива: јавни флоат за додељивање вредности обртног момента.

јавностипловак обртни момент;

Код за скретање лево и десно у овој скрипти је веома сличан оном који се такође користи за кретање напред и назад. Постоји ако изјава за сваки правац који тражи притисак на тастер Д (десно скретање) или тастер А (лево скретање).

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

ако (Улазни. ГетКеи("д")) {
пловак окрет = Улаз. ГетАкис("хоризонтално");
круто тело. АддТоркуе (трансформ.уп * торкуе * турн);
}

ако (Улазни. ГетКеи("а")) {
пловак окрет = Улаз. ГетАкис("хоризонтално");
круто тело. АддТоркуе (трансформ.уп * торкуе * турн);
}

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

Корак 5: Користите Ц# за програмирање скакања

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

приватнибоол исЈумпинг = лажно;

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

ако (!скаче) {
}

Додавање истог услова другом покрету иф изјаве ће спречити играча да се креће током скокова.

ако (Улазни. ГетКеи("в") && !је скакање) {
круто тело. АддФорце (трансформ.форвард * брзина);
}

Унутар !исЈумпинг иф наредбе, потребна вам је друга иф наредба, овог пута да проверите да ли сте притиснули дугме за скок. Постављање променљиве исЈумпинг на труе је прва ствар коју треба урадити у овој иф изјави, након чега следи декларација ригидбоди.ангуларВелоцити за уклањање сила које се тренутно примењују на коцку.

Сада можете користити круто тело. Декларација АддФорце за додавање силе коцки на њеној З оси, стварајући кретање нагоре као скок. Коначно, време је да употребите декларацију за позивање да бисте позвали другу функцију након 0,8 секунди.

ако (!скаче) {
ако (Улазни. ГетКеиДовн("простор")) {
исЈумпинг = истина;
круто тело. АддФорце (трансформ.уп * брзина * 120);
ригидбоди.ангуларВелоцити = Вецтор3.зеро;
Позови ("Мове_Сеттер", 0.8 ф);
}
}

Ова функција враћа променљиву исЈумпинг на фалсе тако да је кретање/скакање могуће поново, а кашњење од 0,8 секунди спречава да се активира прерано.

празнинаМове_Сеттер() {
исЈумпинг = лажно;
}

Корак 6: Тестирајте свој код контролера карактера

Сачувајте датотеку и вратите се у Унити да тестирате код који сте написали. Као и већина компајлера, Унити пружа информације о грешкама и другим проблемима са вашим кодом како би вам олакшао увид у оно што би можда требало да промените. Комплетан код за овај пројекат можете погледати на нашој страници ГитХуб страна.

Креирање Унити контролера карактера

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

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