Да ли сте нови у Унити-у? Желите да научите како да примате податке од играча и померате ликове по екрану? Направили смо овај водич да бисмо приказали три различита начина на које можете да контролишете кретање играча у Унити-у.

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

Хајде да почнемо.

Кретање играча у јединству: прикупљање инпута

Прво морате знати како да ухватите уносе од корисника и трансформишете их у покрете у игри. Унити ово чини прилично лаким све док знате где да тражите.

Када је Унити отворен, кликните на Уредити на горњој траци са алаткама. Сада изаберите Подешавања пројекта. Са листе са леве стране изаберите Менаџер уноса. Изаберите Акес, попуњавање листе улазних вредности. Желећеш да погледаш Хоризонтално и Вертикала за основно кретање.

Користићете ове секире заједно са Улазни. ГетАкисРав(); за основно кретање у следећем одељку.

Кретање играча у јединству помоћу крутог тела и сударача

Сада када знате имена оса, можете их користити за контролу кретања играча.

instagram viewer

У вашем пројекту Унити Хијерархија погледајте, кликните десним тастером миша и изаберите 3Д објекат > Капсула да створите оно чему ћете дати покрет. Обавезно користите исту тактику за стварање терена Авион да би ваша капсула стајала.

Обавезно ресетујте Преобразити вредност оба објекта и померите своју капсулу тако да стоји на равни. Преименујте своју капсулу у нешто попут "Плаиер" за лаку идентификацију.

Повезан: 5 Унити језика за развој игара: који би требало да научите?

Кликните на Плаиер објекат и, у инспекторе приказ, скролујте надоле до Додај компоненту. Додајте а Круто тело, а затим додајте другу компоненту као а Цапсуле Цоллидер овај пут. Ове компоненте ће вам требати да додате физику, а самим тим и кретање Плаиер.

Затим кликните десним тастером миша на свој Скрипте фасцикла и Креирај а нови Ц# скрипта. Назовите ову скрипту нешто у складу са "ПлаиерМовемент". Ако планирате да додате више типова кретања за различите ликове или типове контролера, желећете да креирате много различитих скрипти за сваки тип кретања. За сада ћемо се фокусирати на основе и користити једну скрипту.

Такође видети: Шта је модуларно програмирање у Унити-у и зашто је важно?

Двапут кликните на своју скрипту да бисте је отворили. Упознаћете се са подразумеваном Унити скриптом:

користећи Систем. Цоллецтионс;
користећи Систем. Збирке. Општи;
користећи УнитиЕнгине;
јавна класа ПлаиерМовемент: МоноБехавиоур
{
// Старт се позива пре првог ажурирања оквира
воид Старт()
{

}
// Ажурирање се позива једном по кадру
воид Упдате()
{

}
}

Можете избрисати користећи Систем. Цоллецтионс; и КористећиСистем. Збирке. Општи; пошто нису потребни за ову скрипту.

Склоните то с пута, фокусирајте се на

јавна класа ПлаиерМовемент: МоноБехавиоур {

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

Такође морате да дозволите Унити-у да постоји Ригидбоди да манипулише у овој скрипти. Ово се ради помоћу кључне речи Круто тело и име променљиве — ми ћемо изабрати рб.

јавна класа ПлаиерМовемент: МоноБехавиоур
{
брзина јавног плутања = 10ф; //Контролише множилац брзине

Ригидбоди рб; //Каже скрипти да постоји круто тело, можемо да користимо променљиву рб да га референцирамо у даљем скрипту

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

воид Старт()
{
рб = ГетЦомпонент(); //рб је једнако крутом телу на плејеру
}

Сада, погледајте воид Упдате() функција. Ово је функција коју ћете користити да стално преузимате уносе са тастатура, контролера, итд. Запамтите када сте проверили Подешавања пројекта за Инпут Акес? Овде ћете их користити.

воид Упдате()
{
флоат кМове = Унос. ГетАкисРав("Хоризонтално"); // кључ д мења вредност на 1, а кључ мења вредност на -1
флоат зМове = Унос. ГетАкисРав("Вертикално"); // кључ в мења вредност на 1, с кључ мења вредност на -1
рб.велоцити = нови Вецтор3(кМове, рб.велоцити.и, зМове) * брзина; // Креира брзину у правцу вредности једнаке притиску на тастер (ВАСД). рб.велоцити.и се бави падањем + скакањем постављањем брзине на и.

}

Не брините ако се осећате преоптерећено у скоку у коду; објаснићемо то корак по корак. Прво, креирајте а пловак променљива са именом као што је кМове, и поставите га једнаким Улазни. ГетАкисРав("Хоризонтално");

Улазни. ГетАкисРав(); је Унити-ов начин снимања уноса играча из Акес нашли сте у Подешавања пројекта. Више о томе можете прочитати у Званична документација Унити. "хоризонтално" долази из Хоризонтална оса име у Јединству. Ова оса контролише кретање лево и десно помоћу тастера "а" и "д".

Као што вероватно можете претпоставити до сада, флоат зМове = Унос. ГетАкисРав("Вертикално"); ради исту ствар само за тастере "в" и "с".

Повезан: Најбољи Унити 3Д туторијали за почетнике

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

рб.велоцити = нови Вецтор3(кМове, рб.велоцити.и, зМове) * брзина; // Креира брзину у правцу вредности једнаке притиску на тастер (ВАСД). рб.велоцити.и се бави падањем + скакањем постављањем брзине на и.

Вратите се у Унити'с инспекторе поглед за Плаиер објекат. Погледајте на Круто тело-испод Инфо, видећете вредност Брзина. Ово је вредност на коју циљате рб.велоцити.

нови Вецтор3(кМове, рб.велоцити.и, зМове) * брзина, креира нови вектор са датим вредностима к, и и з, а затим множи вредност вектора са брзина.

Обавезно превуците ПлаиерМовемент скрипту на Плаиер објекат у Јединству, и то је то! Све у свему, имате радну Ц# скрипту која узима уносе од играча и претвара их у кретање ликова у Унити-у.

Ево готовог кода:

користећи УнитиЕнгине;
јавна класа ПлаиерМовемент: МоноБехавиоур
{
брзина јавног плутања = 10ф; //Контролише множилац брзине
Ригидбоди рб; //Каже скрипти да постоји круто тело, можемо да користимо променљиву рб да га референцирамо у даљем скрипту

// Старт се позива пре првог ажурирања оквира
воид Старт()
{
рб = ГетЦомпонент(); //рб је једнако крутом телу на плејеру
}

// Ажурирање се позива једном по кадру
воид Упдате()
{
флоат кМове = Унос. ГетАкисРав("Хоризонтално"); // кључ д мења вредност на 1, а кључ мења вредност на -1
флоат зМове = Унос. ГетАкисРав("Вертикално"); // кључ в мења вредност на 1, с кључ мења вредност на -1
рб.велоцити = нови Вецтор3(кМове, рб.велоцити.и, зМове) * брзина; // Креира брзину у правцу вредности једнаке притиску на тастер (ВАСД). рб.велоцити.и се бави падањем + скакањем постављањем брзине на и.

}
}

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

Научите и направите више у Унити-у

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

Унити Леарн је препун занимљивих тема за унапређење вашег скупа вештина развоја игара. Верујемо да је један од најважнијих фактора у проширењу вашег знања о програмирању учење нечег новог сваког дана. Останите радознали и срећно хаковање!

Унити Леарн је најлакши начин да савладате развој игара

Желите да почнете да развијате сопствене игре? Унити Леарн је најбољи и најлакши начин да научите и савладате оно што треба да знате.

Реад Нект

ОбјавиТвеетЕмаил
Повезане теме
  • Програмирање
  • Развој игара
  • Јединство
  • Програмирање
О аутору
Маркус Мирс ИИИ (Објављено 30 чланака)

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

Више од Маркуса Мирса ИИИ

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили