Oletko uusi Unityssä? Haluatko oppia ottamaan vastaan pelaajia ja liikuttamaan hahmoja ruudulla? Olemme luoneet tämän oppaan esittelemään kolmea eri tapaa hallita pelaajien liikettä Unityssa.
Olitpa uusi koodaamassa tai sinulla on kokemusta, tämä C#-opetusohjelma saa sinut jaloillesi ja hahmosi jaloillesi.
Aloitetaan.
Pelaajien liike yhtenäisyydessä: syötteiden kerääminen
Ensinnäkin sinun on tiedettävä, kuinka vangita käyttäjän syötteitä ja muuntaa ne liikkeeksi pelin sisällä. Unity tekee tästä melko helppoa, kunhan tiedät mistä etsiä.
Kun Unity on auki, napsauta Muokata yläpalkissa. Valitse nyt Projektiasetukset. Valitse vasemmanpuoleisesta luettelosta Input Manager. Valitse Akselit, täyttää syötearvojen luettelon. Haluat katsoa Vaakasuora ja Pystysuora perusliikkeisiin.
Käytät näitä akseleita yhdessä Syöte. GetAxisRaw(); perusliikkeet seuraavassa osiossa.
Pelaajan liike yhtenäisyydessä käyttäen jäykkää runkoa ja törmäystä
Nyt kun tiedät akselien nimet, voit käyttää niitä ohjaamaan pelaajan liikkeitä.
Unity-projektissasi Hierarkia Näytä, napsauta hiiren kakkospainikkeella ja valitse 3D-objekti > Kapseli luodaksesi sen, jolle annat liikkeen. Varmista, että käytät samaa taktiikkaa maan luomiseen Lentokone jotta kapselisi pysyy pystyssä.
Muista nollata Muuttaa molempien objektien arvoa ja siirrä kapseliasi niin, että se seisoo tasossa. Nimeä kapseli uudelleen nimellä "Player" tunnistamisen helpottamiseksi.
Aiheeseen liittyvä: 5 Unity-pelikehityskieltä: mitkä sinun pitäisi oppia?
Klikkaa Pelaaja objekti ja Tarkastaja näkymä, vieritä alas kohtaan Lisää komponentti. Lisää Jäykkä runkoja lisää sitten toinen komponentti muodossa a Kapseli Collider tällä kertaa. Tarvitset näitä komponentteja lisätäksesi fysiikkaa ja siten liikettä Pelaaja.
Napsauta sitten hiiren kakkospainikkeella omaa Käsikirjoitukset kansio ja Luoda uusi C#-komentosarja. Nimeä tämä skripti jollakin tavalla "PlayerMovementin" mukaisesti. Jos aiot lisätä useita liiketyyppejä eri hahmoille tai ohjaintyypeille, haluat luoda useita erilaisia skriptejä kullekin liiketyypille. Toistaiseksi keskitymme perusasioihin ja käytämme yhtä skriptiä.
Katso myös: Mikä on modulaarinen ohjelmointi Unityssa ja miksi se on tärkeää?
Avaa skripti kaksoisnapsauttamalla sitä. Sinulle tulee oletusarvoinen Unity-skripti:
järjestelmän avulla. Kokoelmat;
järjestelmän avulla. Kokoelmat. yleinen;
käyttämällä UnityEngineä;
julkinen luokka PlayerMovement: MonoBehaviour
{
// Start kutsutaan ennen ensimmäistä kehyspäivitystä
void Start()
{}
// Päivitystä kutsutaan kerran kehystä kohti
mitätön päivitys()
{
}
}
Voit poistaa järjestelmän avulla. Kokoelmat; ja käyttämälläJärjestelmä. Kokoelmat. yleinen; koska niitä ei tarvita tähän käsikirjoitukseen.
Kun se on poissa tieltä, keskity siihen
julkinen luokka PlayerMovement: MonoBehaviour {
toistaiseksi. Luo avautuvan kiharan kannakkeen sisäpuolelle a julkinen kelluva muuttuja nimeltä nopeus tai jotain vastaavaa. Tämä nopeus muuttuja on kerroin, joka ohjaa kuinka nopeasti meidän Pelaaja liikkuu vielä ohjelmoinnin jälkeen. Toistaiseksi asetettu nopeus vastaa jotain sellaista 10f.
Sinun on myös annettava Unitylle, että tässä käsikirjoituksessa on Rigidbody manipuloitavaksi. Tämä tehdään avainsanalla Jäykkä runko ja muuttujan nimi – me valitsemme rb.
julkinen luokka PlayerMovement: MonoBehaviour
{
julkinen kelluntanopeus = 10f; //Ohjaa nopeuskerrointa
Jäykkä runko rb; //Kertoo skriptille, että siinä on jäykkä runko, voimme käyttää muuttujaa rb viittaamaan siihen toisessa skriptissä
Se on kaikki mitä sinun tarvitsee lisätä tähän osioon. Siirry nyt eteenpäin void Start(). Kun aloitat pelin, sinun on asetettava rb muuttuja, joka on yhtä suuri kuin Jäykkä runko päällä Pelaaja niin kuin:
void Start()
{
rb = GetComponent(); //rb vastaa soittimen jäykkää runkoa
}
Katso nyt mitätön päivitys() toiminto. Tämä on toiminto, jota käytät jatkuvasti syötteiden nappaamiseen pelaajien näppäimistöiltä, ohjaimista jne. Muista kun tarkistit Projektiasetukset varten Syöttöakselit? Käytät niitä täällä.
mitätön päivitys()
{
float xMove = Syöte. GetAxisRaw("Vaakasuuntainen"); // d-näppäin muuttaa arvoksi 1, avain muuttaa arvoksi -1
float zMove = Syöte. GetAxisRaw("Pystysuuntainen"); // w-näppäin muuttaa arvoksi 1, s-näppäin muuttaa arvon -1:ksi
rb.velocity = uusi Vector3(xMove, rb.velocity.y, zMove) * nopeus; // Luo nopeuden arvon suuntaan, joka on yhtä suuri kuin näppäinpainallus (WASD). rb.velocity.y käsittelee putoamista + hyppäämistä asettamalla nopeudeksi y.
}
Älä huolehdi, jos tunnet olosi hämmentyneeksi koodin siirtyessä. selitämme sen vaihe vaiheelta. Luo ensin a kellua muuttuja, jonka nimi on esim xMove, ja aseta se yhtä suureksi kuin Syöte. GetAxisRaw("Vaakasuuntainen");
Syöte. GetAxisRaw(); on Unityn tapa tallentaa soittimen tuloja Akselit löysit Projektiasetukset. Voit lukea siitä lisää kohdasta Unityn virallinen asiakirja. "Vaaka" tulee kohteesta Vaaka-akseli nimi Unityssa. Tämä akseli ohjaa liikettä vasemmalle ja oikealle "a"- ja "d"-näppäimillä.
Kuten varmaan jo arvaatte, float zMove = Syöte. GetAxisRaw("Pystysuuntainen");
tekee saman asian paitsi "w"- ja "s"-näppäimillä.
Aiheeseen liittyvä: Parhaat Unity 3D -opetusohjelmat aloittelijoille
Seuraavaksi laitat sen nopeus luomasi muuttuja peliin ja viimeistele palapelin viimeinen pala pelaajien liikkumista varten Unityssa.
rb.velocity = uusi Vector3(xMove, rb.velocity.y, zMove) * nopeus; // Luo nopeuden arvon suuntaan, joka on yhtä suuri kuin näppäinpainallus (WASD). rb.velocity.y käsittelee putoamista + hyppäämistä asettamalla nopeudeksi y.
Suuntaa takaisin Unityyn Tarkastaja näkymää varten Pelaaja esine. Katso Jäykkä runko-alla Tiedot, näet arvon Nopeus. Tämä on arvo, johon kohdistat rb.velocity.
uusi Vector3(xMove, rb.velocity.y, zMove) * nopeus, luo uuden vektorin toimitetuilla x-, y- ja z-arvoilla ja kertoo sitten vektorin arvon nopeus.
Muista vetää PlayerMovement skripti päälle Pelaaja esine Unityssa, ja siinä se! Kaiken kaikkiaan sinulla on toimiva C#-skripti, joka ottaa syötteet soittimelta ja muuntaa ne hahmojen liikkeeksi Unityssa.
Tässä on valmis koodi:
käyttämällä UnityEngineä;
julkinen luokka PlayerMovement: MonoBehaviour
{
julkinen kelluntanopeus = 10f; //Ohjaa nopeuskerrointa
Jäykkä runko rb; //Kertoo skriptille, että siinä on jäykkä runko, voimme käyttää muuttujaa rb viittaamaan siihen toisessa skriptissä// Start kutsutaan ennen ensimmäistä kehyspäivitystä
void Start()
{
rb = GetComponent(); //rb vastaa soittimen jäykkää runkoa
}// Päivitystä kutsutaan kerran kehystä kohti
mitätön päivitys()
{
float xMove = Syöte. GetAxisRaw("Vaakasuuntainen"); // d-näppäin muuttaa arvoksi 1, avain muuttaa arvoksi -1
float zMove = Syöte. GetAxisRaw("Pystysuuntainen"); // w-näppäin muuttaa arvoksi 1, s-näppäin muuttaa arvon -1:ksi
rb.velocity = uusi Vector3(xMove, rb.velocity.y, zMove) * nopeus; // Luo nopeuden arvon suuntaan, joka on yhtä suuri kuin näppäinpainallus (WASD). rb.velocity.y käsittelee putoamista + hyppäämistä asettamalla nopeudeksi y.
}
}
Huomautus: Jos huomaat hahmosi floppailevan enemmän kuin mikään muu, muista lukita pelaajan kierto Tarkastaja.
Opi ja tee enemmän Unityssa
Nyt kun tiedät kuinka ohjelmoida pelaajien liike Unityssa Rigidbody- ja Collider-komponenteilla, mitä opit seuraavaksi? Ehkä liikeohjaimen laajentaminen lisäämällä siihen asioita, kuten liukuminen, kaksoishyppy ja paljon muuta, osoittautuisi viihdyttäväksi ja kiinnostavaksi.
Unity Learn on täynnä mielenkiintoisia aiheita, joilla voit kehittää pelinkehitystaitojasi. Uskomme, että yksi tärkeimmistä tekijöistä ohjelmointitietojesi laajentamisessa on uuden oppiminen joka päivä. Pysy utelias ja iloinen hakkerointi!
Haluatko alkaa kehittää omia pelejäsi? Unity Learn on paras ja helpoin tapa oppia ja hallita mitä sinun tarvitsee tietää.
Lue Seuraava
- Ohjelmointi
- Pelin kehitys
- Yhtenäisyys
- Ohjelmointi
Marcus on freelance-teknologiatoimittaja ja MUO: n ohjelmoinnin nuorempi toimittaja. Hän on elinikäinen oppija, harrastaja-kehittäjä ja novellikirjoittaja, jolla on yli 3 vuoden kokemus proosan kehittämisestä, joka pitää lukijat perillä.
tilaa uutiskirjeemme
Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja eksklusiivisia tarjouksia!
Klikkaa tästä tilataksesi