Jeste li novi u Unityju? Želite naučiti kako primati podatke od igrača i premještati likove po ekranu? Stvorili smo ovaj vodič kako bismo prikazali tri različita načina na koje možete kontrolirati kretanje igrača u Unityju.

Bez obzira jeste li novi u kodiranju ili imate određeno iskustvo, ovaj će vas C# tutorial podići na noge, a vaše likove na svoje.

Započnimo.

Kretanje igrača u jedinstvu: prikupljanje inputa

Prije svega, morate znati kako uhvatiti unose od korisnika i transformirati ih u pokrete u igri. Unity to čini prilično lakim sve dok znate gdje tražiti.

Kada je Unity otvoren, kliknite na Uredi na gornjoj alatnoj traci. Sada odaberite Postavke projekta. S popisa s lijeve strane odaberite Upravitelj unosa. Odaberi Sjekire, popunjavanje popisa ulaznih vrijednosti. Htjet ćete pogledati Horizontalno i Okomito za osnovno kretanje.

Koristit ćete ove sjekire zajedno sa Ulazni. GetAxisRaw(); za osnovno kretanje u sljedećem odjeljku.

Kretanje igrača u jedinstvu pomoću krutog tijela i sudarača

Sada kada znate nazive osi, možete ih koristiti za kontrolu kretanja igrača.

instagram viewer

U vašem projektu Unity Hijerarhija pregledajte, kliknite desnom tipkom miša i odaberite 3D objekt > Kapsula stvoriti ono čemu ćete dati pokret. Obavezno koristite istu taktiku za stvaranje tla Avion da vaša kapsula stoji na njoj.

Obavezno resetirajte Transformirati vrijednost oba objekta i pomaknite svoju kapsulu tako da stoji na ravnini. Preimenujte svoju kapsulu u nešto poput "Player" za laku identifikaciju.

Povezano: 5 Unity jezika za razvoj igara: koje biste trebali naučiti?

Klikni na Igrač objekt i, u Inspektor prikaz, pomaknite se dolje do Dodajte komponentu. Dodati Kruto tijelo, a zatim dodajte drugu komponentu kao a Capsule Collider ovaj put. Ove komponente će vam trebati da dodate fiziku, a time i kretanje Igrač.

Zatim desnom tipkom miša kliknite svoj Skripte mapa i Stvoriti novi C# skripta. Imenujte ovu skriptu nešto poput "PlayerMovement". Ako planirate dodati više vrsta kretanja za različite likove ili vrste kontrolera, htjet ćete stvoriti mnogo različitih skripti za svaku vrstu kretanja. Za sada ćemo se usredotočiti na osnove i koristiti jednu skriptu.

Vidi također: Što je modularno programiranje u Unity-u i zašto je važno?

Dvaput kliknite svoju skriptu da biste je otvorili. Susrest ćete se sa zadanom Unity skriptom:

korištenjem sustava. Zbirke;
korištenjem sustava. Zbirke. generički;
korištenje UnityEnginea;
javna klasa PlayerMovement: MonoBehaviour
{
// Start se poziva prije prvog ažuriranja okvira
void Start()
{

}
// Ažuriranje se poziva jednom po kadru
void Update()
{

}
}

Možete izbrisati korištenjem sustava. Zbirke; i korištenjemSustav. Zbirke. generički; jer nisu potrebni za ovu skriptu.

Kad to maknete s puta, usredotočite se na

javna klasa PlayerMovement: MonoBehaviour {

zasad. Unutar otvorne vitičaste zagrade stvorite a javni plutaju varijabla imenovana ubrzati ili nešto slično. Ovaj ubrzati varijabla je množitelj koji će kontrolirati koliko brzo naše Igrač se kreće nakon još programiranja. Za sada, postavite ubrzati jednako nečemu sličnom 10f.

Također morate dopustiti Unity-u da u ovoj skripti postoji Rigidbody da manipulira. To se radi s ključnom riječi Kruto tijelo i naziv varijable — mi ćemo izabrati rb.

javna klasa PlayerMovement: MonoBehaviour
{
brzina javnog plutanja = 10f; //Kontrolira multiplikator brzine

Kruto tijelo rb; // Govori skripti da postoji kruto tijelo, možemo koristiti varijablu rb da ga referenciramo u daljnjoj skripti

To je sve što trebate dodati u ovaj odjeljak. Sada prijeđite na void Start(). Nakon pokretanja igre potrebno je postaviti rb varijabla jednaka Kruto tijelo na Igrač ovako:

void Start()
{
rb = GetComponent(); //rb je jednako krutom tijelu na igraču
}

Sada, pogledajte void Update() funkcija. Ovo je funkcija koju ćete koristiti za stalno hvatanje unosa s tipkovnica, kontrolera itd. Sjetite se kada ste provjerili Postavke projekta za Ulazne osi? Ovdje ćete ih koristiti.

void Update()
{
float xMove = Unos. GetAxisRaw("Horizontalno"); // ključ d mijenja vrijednost na 1, a ključ mijenja vrijednost na -1
float zMove = Unos. GetAxisRaw("Okomito"); // ključ w mijenja vrijednost na 1, s ključ mijenja vrijednost na -1
rb.velocity = novi Vector3(xMove, rb.velocity.y, zMove) * brzina; // Stvara brzinu u smjeru vrijednosti jednake pritisku tipke (WASD). rb.velocity.y rješava padanje + skakanje postavljanjem brzine na y.

}

Ne brinite ako se osjećate preopterećeno u skoku u kodu; objasnit ćemo to korak po korak. Prvo stvorite a plutati varijabla s imenom kao što je xMove, i postavite ga jednakim Ulazni. GetAxisRaw("Horizontalno");

Ulazni. GetAxisRaw(); je Unityjev način snimanja unosa igrača iz Sjekire našli ste u Postavke projekta. Više o tome možete pročitati u Službena dokumentacija Unity. "Horizontalno" dolazi iz Vodoravna os ime u Unity. Ova os kontrolira kretanje lijevo i desno pomoću tipki "a" i "d".

Kao što vjerojatno već možete pretpostaviti, float zMove = Unos. GetAxisRaw("Okomito"); radi istu stvar samo za tipke "w" i "s".

Povezano: Najbolji Unity 3D tutoriali za početnike

Zatim ćete to staviti ubrzati varijabla koju ste stvorili u igri i dovršite posljednji dio slagalice za kretanje igrača u Unityju.

rb.velocity = novi Vector3(xMove, rb.velocity.y, zMove) * brzina; // Stvara brzinu u smjeru vrijednosti jednake pritisku tipke (WASD). rb.velocity.y rješava padanje + skakanje postavljanjem brzine na y.

Vratite se u Unity's Inspektor pogled za Igrač objekt. Pogledajte na Kruto tijelo-pod, ispod Info, vidjet ćete vrijednost Brzina. Ovo je vrijednost na koju ciljate rb.brzina.

novi Vector3(xMove, rb.velocity.y, zMove) * brzina, stvara novi vektor s dostavljenim vrijednostima x, y i z, a zatim množi vrijednost vektora s ubrzati.

Obavezno povucite Pokret igrača skriptu na Igrač objekt u Unity, i to je to! Sve u svemu, imate radnu C# skriptu koja uzima inpute od igrača i pretvara ih u kretanje likova u Unity-u.

Evo gotovog koda:

korištenje UnityEnginea;
javna klasa PlayerMovement: MonoBehaviour
{
brzina javnog plutanja = 10f; //Kontrolira multiplikator brzine
Kruto tijelo rb; // Govori skripti da postoji kruto tijelo, možemo koristiti varijablu rb da ga referenciramo u daljnjoj skripti

// Start se poziva prije prvog ažuriranja okvira
void Start()
{
rb = GetComponent(); //rb je jednako krutom tijelu na igraču
}

// Ažuriranje se poziva jednom po kadru
void Update()
{
float xMove = Unos. GetAxisRaw("Horizontalno"); // ključ d mijenja vrijednost na 1, a ključ mijenja vrijednost na -1
float zMove = Unos. GetAxisRaw("Okomito"); // ključ w mijenja vrijednost na 1, s ključ mijenja vrijednost na -1
rb.velocity = novi Vector3(xMove, rb.velocity.y, zMove) * brzina; // Stvara brzinu u smjeru vrijednosti jednake pritisku tipke (WASD). rb.velocity.y rješava padanje + skakanje postavljanjem brzine na y.

}
}

Bilješka: Ako otkrijete da vaš lik više flokuje od bilo čega drugog, provjerite jeste li zaključali rotaciju igrača u Inspektor.

Naučite i učinite više u Unityju

Sada kada znate kako programirati kretanje igrača u Unity s komponentama Rigidbody i Collider, što ćete sljedeće naučiti? Možda bi se proširenje kontrole pokreta za dodavanje stvari poput klizanja, dvostrukog skakanja i još mnogo toga pokazalo zabavnim i privlačnim.

Unity Learn je prepun zanimljivih tema za unapređenje vašeg skupa vještina razvoja igara. Vjerujemo da je jedan od najvažnijih čimbenika u proširenju vašeg znanja o programiranju učenje nečeg novog svaki dan. Ostanite znatiželjni i sretno hakiranje!

Unity Learn je najlakši način da savladate razvoj igara

Želite početi razvijati vlastite igre? Unity Learn je najbolji i najlakši način da naučite i savladate ono što trebate znati.

Pročitajte dalje

UdioCvrkutE-mail
Povezane teme
  • Programiranje
  • Razvoj igre
  • Jedinstvo
  • Programiranje
O autoru
Marcus Mears III (Objavljeno 30 članaka)

Marcus je slobodni tehnički novinar i mlađi urednik za programiranje u MUO. On je cjeloživotni učenik, hobist front-end developer i pisac kratkih priča s više od 3 godina iskustva u razvoju proze koja čitateljima drži do znanja.

Više od Marcusa Mearsa III

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu