Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Kontroler likova može vam pomoći implementirati jednostavnu fiziku kretanja u vašoj igri.

Unity3D kontrolerima znakova možete pristupiti iz nekoliko kutova. Ako koristite biblioteku sa snažnim klasama i funkcijama, stvaranje kontrolera karaktera temeljenog na fizici može biti zabavno mjesto za početak razvoja vaše igre.

Korak 1: Stvorite scenu s objektima igrača i terena

Nakon što je Unity otvoren i kada ste izradili novi projekt, možete početi dodavanjem nekoliko objekata svojoj sceni. Ove objekte možete stvarati bilo kojim redoslijedom, ali pazite da koristite ispravne postavke. Iako je ovaj projekt bazičan, odličan je način da započnite s Unityjem.

3D ravni objekt za teren

Prvi objekt koji treba dodati vašoj sceni je avion. Desnom tipkom miša kliknite unutar okna hijerarhije, zadržite pokazivač iznad 3D objekti odaberite Avion s popisa. Možete prilagoditi veličinu zrakoplova kako biste osigurali veće područje testiranja, ali ne morate ništa više raditi na njemu.

instagram viewer

Model igrača kockastog objekta

Zatim, vrijeme je da dodate kocku na scenu koja će djelovati kao model igrača. Desnom tipkom miša kliknite unutar okna hijerarhije, zadržite pokazivač iznad 3D objekti odaberite Kocka iz padajućeg izbornika. Postavite novu kocku tako da bude iznad ravnine koju ste također dodali. Također morate dodati komponentu krutog tijela kako biste kocku pretvorili u fizički objekt.

Odaberite kocku i idite do Inspektora. Kliknite na Dodaj komponentu na dnu okna potražite kruto tijelo i odaberite Kruto tijelo s popisa kada se pojavi. Označite Koristite gravitaciju potvrdni okvir i ostavite ostale postavke kakve jesu.

Možeš naći besplatna sredstva Unityja na mreži dotjerati vaš projekt.

Kamera iz trećeg lica

Vaša bi scena već trebala imati kameru koju možete koristiti kao kameru trećeg lica. Postavite kameru tako da bude udobna za treće lice iznad vaše kocke. Idite na okno hijerarhije prije nego povučete i ispustite kameru na kocku da biste stvorili odnos roditelj-dijete. Kamera će automatski pratiti vašu kocku nakon što to učinite.

Brzi test

Iako vaša scena još nema kod, možete testirati posao koji ste do sada obavili. Kliknite na igra gumb na vrhu zaslona za učitavanje igre. Trebali biste vidjeti kako kocka pada i slijeće na vrh aviona, a kamera bi trebala pratiti kocku dok pada.

Korak 2: Postavite C# datoteku

Sada je vrijeme da stvorite C# datoteku kako biste mogli početi programirati neki pokret. Idite na odjeljak Projekt, kliknite desnom tipkom miša, zadržite pokazivač iznad Stvori i odaberite Mapa s popisa. Nazovite mapu Scripts ili nešto slično.

Krećite se unutar svoje nove mape i ponovite postupak, ali odaberite C# skriptu s popisa. Ovoj datoteci možete dati bilo koji naziv, ali to će također biti naziv glavne funkcije unutar nje. Provjerite izgleda li vaš novi C# ovako.

korištenjem Sustav. Zbirke;
korištenjem Sustav. Zbirke. Generički;
korištenjem UnityEngine;

javnostrazredaKontrola_likova: Monoponašanje {
poništitiPočetak() {
}

poništitiAžuriraj() {
}
}

Korak 3: Upotrijebite C# za stvaranje kretanja naprijed i natrag s brzinom

Prije dodavanja funkcijama u vašoj datoteci skripte, deklarirajte neke javne varijable. Prvo je Rigidbody za pohranu modela igrača. Također deklarirajte float da biste pratili brzinu kretanja. Ove varijable idu u glavnu klasu, izvan funkcija.

javnost Rigidbody kruto tijelo;
javnostplutati ubrzati;

Zatim je vrijeme da dodate jednu liniju koda u funkciju Start. Ovo koristi GetComponent deklaraciju za dodjelu komponente rigidbody kocke varijabli rigidbody koju ste stvorili.

poništitiPočetak() {
kruto tijelo = GetComponent < Kruto tijelo > ();
}

Sada možete dodati neki kod koji će pokrenuti vaš model igrača. Ovaj kod je lijep i jednostavan; trebate samo dvije if naredbe, jednu za kretanje naprijed i jednu za kretanje unatrag. Možete koristiti unos. GetKey za određivanje kada je tipka pritisnuta. U ovom slučaju tražite pritiske tipki W i S.

Pritiskom na bilo koju od ovih tipki dodaje se sila krutom tijelu kocke pomoću krutog tijela. AddForce. Možete izračunati smjer i brzinu dodane sile množenjem njezinog položaja Z-osi (transformacija.naprijed) s varijablom brzine. Ne postoji klasa transform.backward koju biste mogli koristiti za kretanje unatrag, ali to je moguće postići množenjem transform.forward s -1.

ako (Ulazni. GetKey("w")) {
kruto tijelo. AddForce (transform.forward * speed);
}

ako (Ulazni. GetKey("s")) {
kruto tijelo. AddForce((transform.forward * -1) * brzina);
}

Spremite C# datoteku i vratite se na Unity. Pronađite skriptu unutar okna Projekt i povucite je i ispustite na kocku modela znakova unutar hijerarhije da biste dodijelili skriptu tom objektu. Kada odaberete kocku, trebali biste vidjeti skriptu kao komponentu u oknu inspektora. Kliknite unutar okvira varijable krutog tijela i odaberite kruto tijelo vaše kocke.

Sada možete koristiti gumb Igraj za pokretanje igre i testiranje svog koda. Ali čekaj! Postoji problem; vaša će se kocka prije kotrljati nego ravno naprijed. Vratite se do inspektora kocke, pronađite komponentu Rigidbody i označite okvire za Zamrzni rotaciju na osi X i Z prije ponovnog pokretanja igre. Sada bi trebalo raditi.

Korak 4: Koristite C# za stvaranje lijevog i desnog skretanja s okretnim momentom

Za razliku od kretanja unatrag i naprijed, okretanje vašeg modela Cube playera zahtijeva silu koja se naziva okretni moment. Za ovo vam je potrebna još jedna varijabla: javni float za dodjelu vrijednosti momenta.

javnostplutati okretni moment;

Kôd za skretanje lijevo i desno u ovoj skripti vrlo je sličan onom koji se također koristi za kretanje naprijed i natrag. Postoji ako izjava za svaki smjer koja traži pritiske tipke D (skretanje udesno) ili tipke A (skretanje ulijevo).

Prvi korak u svakoj if naredbi je određivanje smjera skretanja pomoću unosa. GetAxis metodu i dodijelite rezultat float varijabli. Nakon toga upotrijebite kruto tijelo. AddTorque za primjenu rotacijske sile na model lika kocke množenjem momenta, okretanja i Z osi kocke.

ako (Ulazni. GetKey("d")) {
plutati turn = Ulaz. GetAxis("Vodoravno");
kruto tijelo. AddTorque (transform.up * moment * turn);
}

ako (Ulazni. GetKey("a")) {
plutati turn = Ulaz. GetAxis("Vodoravno");
kruto tijelo. AddTorque (transform.up * moment * turn);
}

Spremite svoj kod i vratite se u Unity da ga isprobate. Možete prilagoditi brzinu i vrijeme ubrzanja rotacije vašeg modela igrača odabirom kocke i uređivanjem varijabli mase, otpora i momenta krutog tijela u vašoj skripti. Ovaj primjer projekta zasniva se na 1 masi, 1 otporu i 2 okretnom momentu.

Korak 5: Koristite C# za programiranje skakanja

Kao posljednji element ovog Unity kontrolera likova, vrijeme je da napravite svoj skok. Stvaranje skoka složenije je od ostalih osnovnih kontrola na kojima ste radili, s obzirom na to da skok mora imati ograničenu visinu. Započnite dodavanjem privatne boolean varijable za praćenje skače li igrač ili ne.

privatnabool jeSkakanje = lažno;

Ova varijabla neće učiniti ništa bez naredbe za testiranje. U ovom slučaju, osnovna if naredba za provjeru je li varijabla lažna će poslužiti. Dodavanje istog uvjeta drugim pokretima if izjava će spriječiti igrača da se kreće tijekom skokova.

ako (!isJumping) {
}

Dodavanje istog uvjeta drugim pokretima if izjava će spriječiti igrača da se kreće tijekom skokova.

ako (Ulazni. GetKey("w") && !isJumping) {
kruto tijelo. AddForce (transform.forward * speed);
}

Unutar naredbe !isJumping if potrebna vam je još jedna naredba if, ovaj put za provjeru pritiska tipke gumba za skok. Postavljanje varijable isJumping na true prva je stvar koju treba učiniti u ovoj if naredbi, nakon čega slijedi izrada deklaracije rigidbody.angularVelocity za uklanjanje sila koje se trenutno primjenjuju na kocku.

Sada možete koristiti kruto tijelo. Deklaracija AddForce za dodavanje sile kocki na njezinoj Z osi, stvarajući kretanje prema gore kao skok. Konačno, vrijeme je da upotrijebite deklaraciju poziva za pozivanje druge funkcije nakon 0,8 sekundi.

ako (!isJumping) {
ako (Ulazni. GetKeyDown("prostor")) {
jeSkakanje = pravi;
kruto tijelo. AddForce (transform.up * brzina * 120);
rigidbody.angularVelocity = Vector3.zero;
Pozvati ("Move_Setter", 0.8 f);
}
}

Ova funkcija vraća varijablu isJumping na false tako da je ponovno moguće kretanje/skakanje, a odgoda od 0,8 sekundi sprječava prerano pokretanje.

poništitiMove_Setter() {
jeSkakanje = lažno;
}

Korak 6: Testirajte svoj kod kontrolera znakova

Spremite svoju datoteku i vratite se u Unity da testirate kod koji ste napisali. Kao i većina prevoditelja, Unity pruža informacije o pogreškama i drugim problemima s vašim kodom kako biste lakše vidjeli što biste trebali promijeniti. Možete vidjeti cijeli kod za ovaj projekt na našem GitHub stranica.

Stvaranje kontrolera znakova Unity

Možete birati između niza različitih pristupa pri stvaranju kontrolera likova u Unityju. Korištenje fizike je jedna opcija, ali također možete koristiti ugrađeni sustav kontrolera znakova ako želite.

Istraživanje različitih opcija poput ove izvrstan je način da naučite o alatima kao što je Unity.