Kas olete Unitys uus? Kas soovite õppida, kuidas mängijatelt sisendeid võtta ja tegelasi ekraanil liigutada? Oleme koostanud selle juhendi, et tutvustada kolme erinevat viisi, kuidas saate Unity'is mängijate liikumist juhtida.

Olenemata sellest, kas olete kodeerimisega uustulnuk või teil on kogemusi, aitab see C# õpetus teid jalule ja teie tegelased enda jalgele.

Alustame.

Mängija liikumine ühtsuses: sisendite kogumine

Esiteks peate teadma, kuidas kasutaja sisendeid jäädvustada ja muuta need mängusiseseks liikumiseks. Ühtsus teeb selle üsna lihtsaks, kui tead, kust otsida.

Kui Unity on avatud, klõpsake nuppu Muuda ülemisel tööriistaribal. Nüüd vali Projekti sätted. Valige vasakpoolsest loendist Sisendhaldur. Valige Kirved, täites sisendväärtuste loendi. Tahad vaadata Horisontaalne ja Vertikaalne põhiliigutamiseks.

Kasutate neid kirveid koos Sisend. GetAxisRaw(); põhiliikumise jaoks järgmises jaotises.

Mängija liikumine ühtses jäiga keha ja põrkuri abil

Nüüd, kui teate telgede nimesid, saate neid kasutada mängija liikumise juhtimiseks.

instagram viewer

Teie Unity projektis Hierarhia vaata, paremklõpsake ja valige 3D-objekt > Kapsel et luua seda, millele saate liikumist anda. Kasutage maapinna loomiseks kindlasti sama taktikat Lennuk et teie kapsel seisaks.

Lähtestage kindlasti Teisendus mõlema objekti väärtust ja liigutage oma kapslit nii, et see seisaks lennukil. Nimetage oma kapsel hõlpsaks tuvastamiseks ümber selliseks nagu "Mängija".

Seotud: 5 Unity mänguarenduskeelt: mida peaksite õppima?

Klõpsake nuppu Mängija objektil ja inspektor kuva, kerige alla Lisa komponent. Lisa Jäik kehaja seejärel lisage veel üks komponent kui a Kapslite põrgataja seekord. Neid komponente vajate füüsika ja seega ka liikumise lisamiseks Mängija.

Seejärel paremklõpsake oma Skriptid kaust ja Loo uus C# skript. Nimetage see skript nagu "PlayerMovement". Kui kavatsete lisada erinevatele tegelastele või kontrolleritüüpidele mitut tüüpi liikumist, soovite iga liigutuse tüübi jaoks luua palju erinevaid skripte. Praegu keskendume põhitõdedele ja kasutame ühte skripti.

Vaata ka: Mis on modulaarne programmeerimine ühtsuses ja miks see on oluline?

Selle avamiseks topeltklõpsake oma skripti. Teile kuvatakse Unity vaikeskript:

süsteemi kasutades. Kollektsioonid;
süsteemi kasutades. Kollektsioonid. Üldine;
UnityEngine'i kasutamine;
avalik klass PlayerMovement: MonoBehaviour
{
// Start kutsutakse enne esimest kaadri värskendust
tühine algus()
{

}
// Värskendust kutsutakse üks kord kaadri kohta
tühine värskendus ()
{

}
}

Saate kustutada süsteemi kasutades. Kollektsioonid; ja kasutadesSüsteem. Kollektsioonid. Üldine; kuna neid pole selle skripti jaoks vaja.

Kui see on eemal, keskenduge sellele

public class PlayerMovement: MonoBehaviour {

praeguseks. Avaneva lokkis trakside sisse looge a avalik ujuki muutuja nimega kiirust või midagi sarnast. See kiirust muutuja on kordaja, mis määrab, kui kiiresti meie Mängija liigub pärast veel mõnda programmeerimist. Praeguseks seadke kiirust võrdne millegi sarnasega 10f.

Samuti peate laskma Unityl selles skriptis manipuleerida jäik keha. Seda tehakse märksõnaga Jäik keha ja muutuja nimi – me valime rb.

avalik klass PlayerMovement: MonoBehaviour
{
avaliku ujuki kiirus = 10f; //Juhib kiiruse kordajat

Jäiga keha rb; //Ütleb skriptile, et on jäik keha, saame kasutada muutujat rb, et sellele viidata edasises skriptis

See on kõik, mida peate selles jaotises lisama. Nüüd liikuge edasi tühine algus(). Mängu alustamisel peate määrama rb muutuja, mis on võrdne Jäik keha peal Mängija nagu nii:

tühine algus()
{
rb = GetComponent(); //rb võrdub mängija jäiga kehaga
}

Heitke nüüd pilk peale tühine värskendus () funktsiooni. See on funktsioon, mida kasutate mängijate klaviatuuridelt, kontrolleritelt jne pidevalt sisendite hankimiseks. Pidage meeles, kui kontrollisite Projekti sätted jaoks Sisendteljed? Kasutate neid siin.

tühine värskendus ()
{
float xMove = Sisend. GetAxisRaw("Horisontaalne"); // d-klahv muudab väärtuse 1-ks, võti muudab väärtuse -1-ks
float zMove = Sisend. GetAxisRaw("Vertikaalne"); // klahv w muudab väärtuse 1-ks, klahv s muudab väärtuse -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kiirus; // Loob kiiruse väärtuse suunas, mis on võrdne klahvivajutusega (WASD). rb.velocity.y käsitleb kukkumist + hüppamist, määrates kiiruse y-le.

}

Ärge muretsege, kui tunnete end koodi hüppega hämmingus; selgitame seda samm-sammult. Esiteks looge a ujuk muutuja nimega nagu xMove, ja määrake see võrdseks väärtusega Sisend. GetAxisRaw("Horisontaalne");

Sisend. GetAxisRaw(); on Unity viis mängija sisendite salvestamiseks Kirved leidsid Projekti sätted. Täpsemalt saate selle kohta lugeda Unity ametlik dokumentatsioon. "Horisontaalne" pärineb Horisontaaltelg nimi Ühtsuses. See telg juhib liikumist vasakule ja paremale klahvidega "a" ja "d".

Nagu praegu ilmselt arvata võite, float zMove = Sisend. GetAxisRaw("Vertikaalne"); teeb sama asja, välja arvatud klahvide "w" ja "s" puhul.

Seotud: Parimad Unity 3D õpetused algajatele

Järgmisena paned selle kiirust mängusse loodud muutuja ja lõpetage Unity'is mängija liikumiseks pusle viimane tükk.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kiirus; // Loob kiiruse väärtuse suunas, mis on võrdne klahvivajutusega (WASD). rb.velocity.y käsitleb kukkumist + hüppamist, määrates kiiruse y-le.

Minge tagasi Unity'sse inspektor vaade jaoks Mängija objektiks. Heitke pilk aadressile Jäik keha- all Info, näete väärtust Kiirus. See on väärtus, mida sihite rb.kiirus.

uus Vector3(xMove, rb.velocity.y, zMove) * kiirus, loob esitatud x, y ja z väärtustega uue vektori, seejärel korrutab vektori väärtuse kiirust.

Lohistage kindlasti Mängija liikumine skripti peale Mängija objekt Ühtsuses ja ongi kõik! Kokkuvõttes on teil töötav C# skript, mis võtab mängijalt sisendid ja muudab need Unity'is tegelaste liikumiseks.

Siin on valmis kood:

UnityEngine'i kasutamine;
avalik klass PlayerMovement: MonoBehaviour
{
avaliku ujuki kiirus = 10f; //Juhib kiiruse kordajat
Jäiga keha rb; //Ütleb skriptile, et on jäik keha, saame kasutada muutujat rb, et sellele viidata edasises skriptis

// Start kutsutakse enne esimest kaadri värskendust
tühine algus()
{
rb = GetComponent(); //rb võrdub mängija jäiga kehaga
}

// Värskendust kutsutakse üks kord kaadri kohta
tühine värskendus ()
{
float xMove = Sisend. GetAxisRaw("Horisontaalne"); // d-klahv muudab väärtuse 1-ks, võti muudab väärtuse -1-ks
float zMove = Sisend. GetAxisRaw("Vertikaalne"); // klahv w muudab väärtuse 1-ks, klahv s muudab väärtuse -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kiirus; // Loob kiiruse väärtuse suunas, mis on võrdne klahvivajutusega (WASD). rb.velocity.y käsitleb kukkumist + hüppamist, määrates kiiruse y-le.

}
}

Märge: Kui leiate, et teie tegelane teeb rohkem floppamist kui miski muu, lukustage kindlasti mängija pöörlemine inspektor.

Õppige ja tehke Unitys rohkem

Nüüd, kui teate, kuidas programmeerida mängija liikumist Unity's Rigidbody ja Collider komponentidega, mida järgmiseks õppida? Võib-olla osutuks meelelahutuseks ja kaasahaaravaks liikumiskontrolleri laiendamine, et lisada selliseid asju nagu libisemine, topelthüppamine ja palju muud.

Unity Learn on täis huvitavaid teemasid, mis aitavad teie mänguarendusoskusi arendada. Usume, et programmeerimisalaste teadmiste laiendamise üks olulisemaid tegureid on iga päev millegi uue õppimine. Olge uudishimulikud ja head häkkimist!

Unity Learn on lihtsaim viis mängude arendamiseks

Kas soovite hakata oma mänge arendama? Unity Learn on parim ja lihtsaim viis õppida ja omandada seda, mida peate teadma.

Loe edasi

JagaSäutsMeil
Seotud teemad
  • Programmeerimine
  • Mänguarendus
  • Ühtsus
  • Programmeerimine
Autori kohta
Marcus Mears III (Avaldatud 30 artiklit)

Marcus on vabakutseline tehnikaajakirjanik ja MUO programmeerimise nooremtoimetaja. Ta on elukestev õppija, harrastajatest esiotsa arendaja ja novellikirjanik, kellel on üle 3-aastane kogemus proosa arendamises, mis hoiab lugejaid kursis.

Veel Marcus Mears III-st

Liituge meie uudiskirjaga

Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!

Tellimiseks klõpsake siin