Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

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

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

Стъпка 1: Създайте сцена с играч и теренни обекти

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

3D плосък обект за терен

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

instagram viewer
3D обекти изберете Самолет от списъка. Можете да регулирате размера на самолета, за да осигурите по-голяма зона за тестване, но не е необходимо да правите нищо друго с него.

Модел на играч на кубичен обект

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

Изберете куба и отидете при инспектора. Кликнете върху Добавяне на компонент в долната част на прозореца потърсете rigidbody и изберете Твърдо тяло от списъка, когато се появи. Отбележете Използвайте гравитацията отметнете и оставете останалите настройки както са.

Можете да намерите безплатни активи на Unity онлайн за да украсите проекта си.

Камера от трето лице

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

Бърз тест

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

Стъпка 2: Настройте C# файл

Сега е време да създадете C# файл, за да можете да започнете да програмирате някакво движение. Отидете в секцията Проект, щракнете с десния бутон, задръжте курсора на мишката върху Създаване и изберете Папка от списъка. Наименувайте папката Scripts или нещо подобно.

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

използвайки Система. колекции;
използвайки Система. Колекции. Generic;
използвайки UnityEngine;

публиченкласCharacter_Control: Моноповедение {
невалиденЗапочнете() {
}

невалиденАктуализация() {
}
}

Стъпка 3: Използвайте C#, за да създадете движение напред и назад със скорост

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

публичен твърдо тяло;
публиченплавам скорост;

След това е време да добавите един ред код към функцията Старт. Това използва декларация на GetComponent, за да присвоите компонента rigidbody на Cube към създадената от вас променлива rigidbody.

невалиденЗапочнете() {
rigidbody = GetComponent < Rigidbody > ();
}

Сега можете да добавите някакъв код, който ще раздвижи вашия модел на играч. Този код е хубав и прост; имате нужда само от два оператора if, един за движение напред и един за движение назад. Можете да използвате Input. GetKey за определяне кога е натиснат клавиш. В този случай търсите натискане на клавишите W и S.

Натискането на някой от тези клавиши добавя сила към твърдото тяло на куба с помощта на твърдо тяло. AddForce. Можете да изчислите посоката и скоростта на добавената сила, като умножите нейната позиция по Z-ос (transform.forward) по променливата на скоростта. Няма клас transform.backward, който да използвате за движение назад, но това е постижимо чрез умножаване на transform.forward по -1.

ако (Вход. GetKey("w")) {
твърдо тяло. AddForce (transform.forward * скорост);
}

ако (Вход. GetKey("с")) {
твърдо тяло. AddForce((transform.forward * -1) * скорост);
}

Запазете C# файла и се върнете обратно към Unity. Намерете скрипта в прозореца на проекта и го плъзнете и пуснете върху модела на знаци Cube в йерархията, за да присвоите скрипта на този обект. Когато изберете куба, трябва да видите скрипта като компонент в панела на инспектора. Щракнете в полето с променливи за твърдо тяло и изберете твърдото тяло на вашия куб.

Вече можете да използвате бутона Play, за да стартирате играта и да тествате своя код. Но почакай! Има проблем; вашият куб ще се търкаля, вместо да се движи право напред. Върнете се в инспектора на Cube, намерете компонента Rigidbody и поставете отметка в квадратчетата до Freeze Rotation по оста X и Z, преди да стартирате играта отново. Сега трябва да работи.

Стъпка 4: Използвайте C#, за да създадете ляво и дясно завиване с въртящ момент

За разлика от движението назад и напред, завъртането на вашия модел Cube Player изисква сила, наречена въртящ момент. Имате нужда от друга променлива за това: публичен плаващ елемент, за да зададете стойност на въртящия момент.

публиченплавам въртящ момент;

Кодът за завиване наляво и надясно в този скрипт е много подобен на този, използван и за движение напред и назад. Има един ако израз за всяка посока, който търси натискания на клавиша D (завой надясно) или клавиша A (завой наляво).

Първата стъпка във всеки оператор if е да се определи посоката на завоя с помощта на Input. Метод GetAxis и присвояване на резултата на променлива с плаваща единица. След това използвайте твърдо тяло. Добавете въртящ момент, за да приложите сила на въртене към модела на героя на куба, като умножите въртящия момент, завъртането и оста Z на куба.

ако (Вход. GetKey("д")) {
плавам turn = Вход. GetAxis("хоризонтално");
твърдо тяло. AddTorque (transform.up * torque * turn);
}

ако (Вход. GetKey("а")) {
плавам turn = Вход. GetAxis("хоризонтално");
твърдо тяло. AddTorque (transform.up * torque * turn);
}

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

Стъпка 5: Използвайте C#, за да програмирате Jumping

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

частенbool isJumping = невярно;

Тази променлива няма да направи нищо без оператор, който да я тества. В този случай основен оператор if за проверка дали променливата е false ще свърши работа. Добавянето на същото условие към другото движение if изявления ще спре играча да се движи по време на скокове.

ако (!isJumping) {
}

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

ако (Вход. GetKey("w") && !isJumping) {
твърдо тяло. AddForce (transform.forward * скорост);
}

В оператора !isJumping if имате нужда от друг оператор if, този път за проверка за натискане на клавиш на бутона за прескачане. Задаването на променливата isJumping на true е първото нещо, което трябва да направите в този оператор if, последвано от създаване на декларация rigidbody.angularVelocity за премахване на силите, приложени в момента към куба.

Сега можете да използвате твърдото тяло. Декларация AddForce за добавяне на сила към куба по неговата Z ос, създавайки движение нагоре на скок. И накрая, време е да използвате декларация за извикване, за да извикате различна функция след 0,8 секунди.

ако (!isJumping) {
ако (Вход. GetKeyDown("пространство")) {
isJumping = вярно;
твърдо тяло. AddForce (transform.up * скорост * 120);
rigidbody.angularVelocity = Vector3.zero;
Извикване ("Move_Setter", 0.8 е);
}
}

Тази функция задава променливата isJumping обратно на false, така че движението/скачането е възможно отново, а забавянето от 0,8 секунди спира задействането му твърде рано.

невалиденMove_Setter() {
isJumping = невярно;
}

Стъпка 6: Тествайте вашия код на контролер на знаци

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

Създаване на Unity символни контролери

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

Проучването на различни опции като тази е чудесен начин да научите за инструменти като Unity.