Ste novi v Unityju? Se želite naučiti, kako sprejemati vnose igralcev in premikati like po zaslonu? Ta vodnik smo ustvarili za predstavitev treh različnih načinov, kako lahko nadzirate gibanje igralcev v Unity.

Ne glede na to, ali ste novi pri kodiranju ali imate nekaj izkušenj, vas bo ta vadnica C# postavila na noge in vaše like na svoje.

Začnimo.

Gibanje igralcev v enotnosti: zbiranje vložkov

Najprej morate vedeti, kako zajeti uporabniške vnose in jih pretvoriti v gibanje v igri. Unity to precej olajša, če veste, kje iskati.

Ko je Unity odprt, kliknite na Uredi na zgornji orodni vrstici. Zdaj izberite Nastavitve projekta. Na levem seznamu izberite Upravitelj vnosov. Izberite sekire, ki zapolni seznam vhodnih vrednosti. Boste želeli pogledati Vodoravno in Navpična za osnovno gibanje.

Te osi boste uporabljali skupaj z Vnos. GetAxisRaw(); za osnovno gibanje v naslednjem razdelku.

Gibanje igralca v enotnosti z uporabo trdega telesa in trkalnika

Zdaj, ko poznate imena osi, jih lahko uporabite za nadzor gibanja igralca.

V vašem projektu Unity Hierarhija ogled, z desno tipko miške kliknite in izberite 3D predmet > Kapsula ustvariti tisto, čemur boš dal gibanje. Prepričajte se, da uporabite isto taktiko za ustvarjanje tal Letalo da vaša kapsula stoji.

Ne pozabite ponastaviti Preoblikovanje vrednost obeh predmetov in premaknite svojo kapsulo tako, da stoji na ravnini. Za lažjo identifikacijo preimenujte svojo kapsulo v nekaj podobnega "Player".

Povezano: 5 jezikov za razvoj iger Unity: katere se morate naučiti?

Kliknite na Igralec predmet in v Inšpektor ogled, pomaknite se navzdol do Dodaj komponento. Dodajte a Trdo telo, nato pa dodajte drugo komponento kot a Trkalnik kapsul tokrat. Te komponente boste potrebovali za dodajanje fizike in s tem gibanja vašemu Igralec.

Nato z desno miškino tipko kliknite svoj Skripte mapo in Ustvari nov C# skript. Poimenujte ta skript tako kot "PlayerMovement". Če nameravate dodati več vrst gibanja za različne znake ali vrste krmilnikov, boste želeli ustvariti veliko različnih skriptov za vsako vrsto gibanja. Za zdaj se bomo osredotočili na osnove in uporabili en skript.

Poglej tudi: Kaj je modularno programiranje v Unity in zakaj je pomembno?

Dvokliknite svoj skript, da ga odprete. Dobili boste privzeti skript Unity:

z uporabo sistema. Zbirke;
z uporabo sistema. Zbirke. generično;
z uporabo UnityEngine;
javni razred PlayerMovement: MonoBehaviour
{
// Start se pokliče pred prvo posodobitvijo okvirja
void Start()
{

}
// Posodobitev se kliče enkrat na okvir
void Update()
{

}
}

Lahko izbrišete z uporabo sistema. Zbirke; in z uporabosistem. Zbirke. generično; saj niso potrebni za ta skript.

Če tega ne mine, se osredotočite na

javni razred PlayerMovement: MonoBehaviour {

za zdaj. Znotraj odprtega oklepaja ustvarite a javno plavanje poimenovana spremenljivka hitrost ali kaj podobnega. tole hitrost spremenljivka je množitelj, ki bo nadzoroval, kako hitro bo naš Igralec premakne po nadaljnjem programiranju. Zaenkrat nastavite hitrost enako nečemu podobnemu 10f.

Prav tako morate Unity dovoliti, da je v tem skriptu Rigidbody, s katerim lahko manipulira. To se naredi s ključno besedo Trdo telo in ime spremenljivke – izbrali bomo rb.

javni razred PlayerMovement: MonoBehaviour
{
hitrost javnega plovca = 10f; //Nadzoruje množitelj hitrosti

Rigidbody rb; // pove skriptu, da obstaja togo telo, lahko uporabimo spremenljivko rb za sklicevanje nanj v nadaljnjem skriptu

To je vse, kar morate dodati v tem razdelku. Zdaj pa nadaljujte void Start(). Ko začnete igro, morate nastaviti rb spremenljivka enaka Trdo telo na Igralec takole:

void Start()
{
rb = GetComponent(); //rb je enako togemu telesu na predvajalniku
}

Zdaj pa si oglejte void Update() funkcijo. To je funkcija, ki jo boste uporabljali za nenehno zajemanje vnosov s tipkovnic, krmilnikov itd. Spomnite se, ko ste preverili Nastavitve projekta za Vhodne osi? Tukaj jih boste uporabili.

void Update()
{
float xMove = Vnos. GetAxisRaw("Horizontalno"); // ključ d spremeni vrednost na 1, ključ spremeni vrednost na -1
float zMove = Vnos. GetAxisRaw("Navpično"); // tipka w spremeni vrednost na 1, s tipka spremeni vrednost na -1
rb.velocity = nov Vector3(xMove, rb.velocity.y, zMove) * hitrost; // Ustvari hitrost v smeri vrednosti, ki je enaka pritisku tipke (WASD). rb.velocity.y obravnava padanje + skakanje tako, da nastavi hitrost na y.

}

Ne skrbite, če se ob skoku v kodo počutite preobremenjeni; razložili bomo korak za korakom. Najprej ustvarite a lebdeti spremenljivka z imenom, kot je xMove, in ga nastavite enako Vnos. GetAxisRaw("Horizontalno");

Vnos. GetAxisRaw(); je Unityjev način snemanja vnosov predvajalnika iz sekire ste našli v Nastavitve projekta. Več o tem si lahko preberete v Uradna dokumentacija Unity. "Horizontalno" prihaja iz Horizontalna os ime v Unity. Ta os krmili gibanje levo in desno s tipkama "a" in "d".

Kot že verjetno lahko uganete, float zMove = Vnos. GetAxisRaw("Navpično"); naredi isto stvar, vendar za tipki "w" in "s".

Povezano: Najboljše vadnice Unity 3D za začetnike

Naprej boš to postavil hitrost spremenljivka, ki ste jo ustvarili v igri, in dokončajte zadnji del sestavljanke za gibanje igralca v Unity.

rb.velocity = nov Vector3(xMove, rb.velocity.y, zMove) * hitrost; // Ustvari hitrost v smeri vrednosti, ki je enaka pritisku tipke (WASD). rb.velocity.y obravnava padanje + skakanje tako, da nastavi hitrost na y.

Pojdite nazaj v Unity's Inšpektor pogled za Igralec predmet. Oglejte si Trdo telo-Spodaj Info, boste videli vrednost Hitrost. To je vrednost, na katero ciljate rb.hitrost.

novo Vector3(xMove, rb.velocity.y, zMove) * hitrost, ustvari nov vektor s podanimi vrednostmi x, y in z, nato pomnoži vrednost vektorja z hitrost.

Ne pozabite povleči PlayerMovement skripta na Igralec predmet v Unity, in to je to! Vse skupaj imate delujoč skript C#, ki vzame vnose od predvajalnika in jih pretvori v gibanje znakov v Unity.

Tukaj je končana koda:

z uporabo UnityEngine;
javni razred PlayerMovement: MonoBehaviour
{
hitrost javnega plovca = 10f; //Nadzoruje množitelj hitrosti
Rigidbody rb; // pove skriptu, da obstaja togo telo, lahko uporabimo spremenljivko rb za sklicevanje nanj v nadaljnjem skriptu

// Start se pokliče pred prvo posodobitvijo okvirja
void Start()
{
rb = GetComponent(); //rb je enako togemu telesu na predvajalniku
}

// Posodobitev se kliče enkrat na okvir
void Update()
{
float xMove = Vnos. GetAxisRaw("Horizontalno"); // ključ d spremeni vrednost na 1, ključ spremeni vrednost na -1
float zMove = Vnos. GetAxisRaw("Navpično"); // tipka w spremeni vrednost na 1, s tipka spremeni vrednost na -1
rb.velocity = nov Vector3(xMove, rb.velocity.y, zMove) * hitrost; // Ustvari hitrost v smeri vrednosti, ki je enaka pritisku tipke (WASD). rb.velocity.y obravnava padanje + skakanje tako, da nastavi hitrost na y.

}
}

Opomba: Če ugotovite, da vaš lik bolj flopa kot karkoli drugega, poskrbite, da boste zaklenili igralčevo rotacijo v Inšpektor.

Naučite se in naredite več v Unity

Zdaj, ko veste, kako programirati gibanje igralca v Unity s komponentami Rigidbody in Collider, kaj se boste nato naučili? Morda bi se razširitev krmilnika gibanja z dodajanjem stvari, kot so drsenje, dvojno skakanje in drugo, izkazala za zabavno in privlačno.

Unity Learn je poln zanimivih tem za izboljšanje vašega nabora spretnosti pri razvoju iger. Verjamemo, da je eden najpomembnejših dejavnikov pri širjenju vašega znanja o programiranju vsak dan učenje česa novega. Ostanite radovedni in srečno hekanje!

Unity Learn je najlažji način za obvladovanje razvoja iger

Želite začeti razvijati svoje igre? Unity Learn je najboljši in najpreprostejši način za učenje in obvladovanje tega, kar morate vedeti.

Preberite Naprej

DelitiTweetE-naslov
Povezane teme
  • Programiranje
  • Razvoj iger
  • Enost
  • Programiranje
O avtorju
Marcus Mears III (30 objavljenih člankov)

Marcus je samostojni tehnični novinar in mlajši urednik za programiranje pri MUO. Je vseživljenjski učenec, hobi razvijalec front-end in pisec kratkih zgodb z več kot 3-letnimi izkušnjami pri razvijanju proze, ki bralce obvešča.

Več od Marcusa Mearsa III

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite