Нов ли сте в Unity? Искате да научите как да приемате данни от играчите и да премествате герои по екрана? Създадохме това ръководство, за да покажем три различни начина, по които можете да контролирате движението на играчите в Unity.

Независимо дали сте нов в кодирането или имате известен опит, този урок по C# ще ви изправи на крака, а вашите герои – на техните.

Да започваме.

Движение на играча в Unity: Събиране на входове

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

С отворен Unity щракнете върху редактиране в горната лента с инструменти. Сега изберете Настройки на проекта. От левия списък изберете Мениджър на въвеждане. Изберете Брадви, попълвайки списъка с входни стойности. Ще искате да погледнете Хоризонтална и Вертикална за основно движение.

Ще използвате тези оси заедно с Вход. GetAxisRaw(); за основно движение в следващия раздел.

Движение на играча в Unity с помощта на твърдо тяло и колайдер

instagram viewer

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

Във вашия проект Unity Йерархия преглед, щракнете с десния бутон и изберете 3D обект > Капсула за да създадете това, на което ще придадете движение. Уверете се, че използвате същата тактика, за да създадете терен Самолет за да стои вашата капсула.

Не забравяйте да нулирате Трансформирайте стойност на двата обекта и преместете капсулата си така, че да стои на равнината. Преименувайте вашата капсула на нещо като "Player" за лесна идентификация.

Свързани: 5-те езика за разработка на игри Unity: кои трябва да научите?

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

След това щракнете с десния бутон във вашия Скриптове папка и Създайте нов C# скрипт. Наименувайте този скрипт нещо подобно на "PlayerMovement". Ако планирате да добавите няколко типа движение за различни герои или типове контролери, ще искате да създадете много различни скриптове за всеки тип движение. Засега ще се съсредоточим върху основите и ще използваме един скрипт.

Вижте също: Какво представлява модулното програмиране в Unity и защо е важно?

Щракнете двукратно върху вашия скрипт, за да го отворите. Ще бъдете посрещнати със скрипт на Unity по подразбиране:

с помощта на System. Колекции;
с помощта на System. Колекции. генеричен;
използване на UnityEngine;
публичен клас PlayerMovement: MonoBehaviour
{
// Старт се извиква преди актуализацията на първия кадър
void Start()
{

}
// Актуализацията се извиква веднъж на кадър
невалидна актуализация()
{

}
}

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

Като изключите това, фокусирайте се върху

публичен клас PlayerMovement: MonoBehaviour {

за сега. Вътре в отварящата фигурна скоба създайте a обществена плувка именувана променлива скорост или нещо подобно. Това скорост променливата е множител, който ще контролира колко бързо нашата Играч се движи след още малко програмиране. Засега настройте скорост равно на нещо подобно 10f.

Също така трябва да позволите на Unity да има Rigidbody, който да манипулира в този скрипт. Това се прави с ключовата дума Твърдо тяло и име на променлива - ние ще изберем rb.

публичен клас PlayerMovement: MonoBehaviour
{
обществена плаваща скорост = 10f; //Контролира множителя на скоростта

Rigidbody rb; // Казва на скрипта, че има твърдо тяло, можем да използваме променлива rb, за да го препратим в допълнителен скрипт

Това е всичко, което трябва да добавите в този раздел. Сега преминете към void Start(). След като стартирате играта, трябва да настроите rb променлива, равна на Твърдо тяло на Играч така:

void Start()
{
rb = GetComponent(); //rb е равно на твърдото тяло на плейъра
}

Сега разгледайте невалидна актуализация() функция. Това е функцията, която ще използвате, за да вземете постоянно входове от клавиатурите, контролерите и т.н. на играчите. Спомнете си кога сте проверили Настройки на проекта за Входни оси? Тук ще ги използвате.

невалидна актуализация()
{
float xMove = Вход. GetAxisRaw("Хоризонтално"); // ключ d променя стойността на 1, ключ променя стойността на -1
float zMove = Вход. GetAxisRaw("Вертикален"); // w ключ променя стойността на 1, s ключ променя стойността на -1
rb.velocity = нов Vector3(xMove, rb.velocity.y, zMove) * скорост; // Създава скорост в посока на стойност, равна на натискане на клавиш (WASD). rb.velocity.y се занимава с падане + скачане, като задава скоростта на y.

}

Не се притеснявайте, ако се чувствате претоварени от прескачането на кода; ще го обясним стъпка по стъпка. Първо, създайте a плува променлива с име като xMove, и го задайте равно на Вход. GetAxisRaw("Хоризонтално");

Вход. GetAxisRaw(); е начинът на Unity за записване на входовете на плейъра от Брадви намерихте в Настройки на проекта. Можете да прочетете повече за това в Официалната документация на Unity. "хоризонтално" идва от Хоризонтална ос име в Unity. Тази ос управлява движението наляво и надясно с клавишите "a" и "d".

Както вероятно вече можете да предположите, float zMove = Вход. GetAxisRaw("Вертикален"); прави същото, но за клавишите "w" и "s".

Свързани: Най-добрите уроци за Unity 3D за начинаещи

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

rb.velocity = нов Vector3(xMove, rb.velocity.y, zMove) * скорост; // Създава скорост в посока на стойност, равна на натискане на клавиш (WASD). rb.velocity.y се занимава с падане + скачане, като задава скоростта на y.

Върнете се в Unity's Инспектор изглед за Играч обект. Разгледайте в Твърдо тяло— под Информация, ще видите стойност Скорост. Това е стойността, към която се насочвате rb.скорост.

нов Vector3(xMove, rb.velocity.y, zMove) * скорост, създава нов вектор с предоставените стойности x, y и z, след което умножава стойността на вектора по скорост.

Не забравяйте да плъзнете Движение на играча скрипт върху Играч обект в Unity и това е! Като цяло имате работещ C# скрипт, който взема входни данни от плейъра и ги трансформира в движение на герои в Unity.

Ето готовия код:

използване на UnityEngine;
публичен клас PlayerMovement: MonoBehaviour
{
обществена плаваща скорост = 10f; //Контролира множителя на скоростта
Rigidbody rb; // Казва на скрипта, че има твърдо тяло, можем да използваме променлива rb, за да го препратим в допълнителен скрипт

// Старт се извиква преди актуализацията на първия кадър
void Start()
{
rb = GetComponent(); //rb е равно на твърдото тяло на плейъра
}

// Актуализацията се извиква веднъж на кадър
невалидна актуализация()
{
float xMove = Вход. GetAxisRaw("Хоризонтално"); // ключ d променя стойността на 1, ключ променя стойността на -1
float zMove = Вход. GetAxisRaw("Вертикален"); // w ключ променя стойността на 1, s ключ променя стойността на -1
rb.velocity = нов Vector3(xMove, rb.velocity.y, zMove) * скорост; // Създава скорост в посока на стойност, равна на натискане на клавиш (WASD). rb.velocity.y се занимава с падане + скачане, като задава скоростта на y.

}
}

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

Научете и правете повече в Unity

Сега, когато знаете как да програмирате движението на играча в Unity с компоненти Rigidbody и Collider, какво ще научите след това? Може би разширяването на вашия контролер за движение, за да добавите неща като плъзгане, двоен скачане и други, ще се окаже забавно и ангажиращо.

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

Unity Learn е най-лесният начин да овладеете разработката на игри

Искате ли да започнете да разработвате свои собствени игри? Unity Learn е най-добрият и лесен начин да научите и овладеете това, което трябва да знаете.

Прочетете Следващото

Дялтуителектронна поща
Свързани теми
  • Програмиране
  • Разработка на игри
  • Единство
  • Програмиране
За автора
Маркъс Миърс III (Публикувани 30 статии)

Маркъс е технически журналист на свободна практика и младши редактор за програмиране в MUO. Той е учащ се през целия живот, хоби разработчик на front-end и писател на кратки истории с 3+ години опит в разработването на проза, която държи читателите в течение.

Още от Маркъс Миърс III

Абонирайте се за нашия бюлетин

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

Щракнете тук, за да се абонирате