Hahmoohjain voi auttaa sinua toteuttamaan yksinkertaista liikefysiikkaa pelissäsi.
Voit lähestyä Unity3D-merkkiohjaimia useista eri näkökulmista. Jos käytät kirjastoa, jossa on tehokkaita luokkia ja toimintoja, fysiikkapohjaisen hahmoohjaimen luominen voi olla hauska paikka aloittaa pelin kehitys.
Vaihe 1: Luo kohtaus pelaaja- ja maasto-objekteilla
Kun Unity on auki ja olet luonut uuden projektin, voit aloittaa lisäämällä kohtaukseen muutaman kohteen. Voit luoda nämä objektit missä tahansa järjestyksessä, mutta ole varovainen ja varmista, että käytät oikeita asetuksia. Vaikka tämä projekti on perus, se on loistava tapa Aloita Unityn kanssa.
3D-tasoobjekti maastoon
Ensimmäinen kohtaukseen lisättävä esine on lentokone. Napsauta hiiren kakkospainikkeella hierarkiaruudun sisällä ja vie hiiri sen päälle 3D-objektija valitse Lentokone luettelosta. Voit säätää koneen kokoa suuremman testausalueen saamiseksi, mutta sinun ei tarvitse tehdä sille mitään.
Kuutioobjektisoitinmalli
Seuraavaksi on aika lisätä kohtaukseen kuutio toimimaan pelaajamallina. Napsauta hiiren kakkospainikkeella hierarkiaruudun sisällä ja vie hiiri sen päälle 3D-objektija valitse Kuutio avattavasta valikosta. Sijoita uusi kuutio niin, että se on myös lisäämäsi tason yläpuolella. Sinun on myös lisättävä jäykän rungon komponentti, jotta kuutiosta tulee fysiikan objekti.
Valitse kuutio ja mene tarkastajaan. Klikkaa Lisää komponentti etsi ruudun alareunasta jäykkä runko ja valitse Jäykkä runko luettelosta, kun se tulee näkyviin. Merkitse rasti Käytä painovoimaa valintaruutu ja jätä loput asetukset ennalleen.
Voit löytää ilmaiset Unity-varat verkossa piristääksesi projektiasi.
Kolmannen henkilön kamera
Kohtauksessasi pitäisi jo olla kamera, jota voit käyttää kolmannen persoonan kamerana. Sijoita kamera niin, että se on mukavassa kolmannen henkilön asennossa kuutiosi yläpuolella. Siirry hierarkiaruutuun ennen kuin vedät ja pudotat kameran kuutioon luodaksesi vanhemman ja lapsen suhteen. Kamera seuraa automaattisesti kuutiota, kun tämä on tehty.
Pikatesti
Vaikka kohtauksellasi ei ole vielä koodia, voit testata tähän mennessä tekemääsi työtä. Klikkaa pelata -painiketta näytön yläosassa ladataksesi pelisi. Sinun pitäisi nähdä kuution putoaminen ja laskeutuvan koneen päälle, ja kameran pitäisi seurata kuutiota sen putoaessa.
Vaihe 2: Määritä C#-tiedosto
Nyt on aika luoda C#-tiedosto, jotta voit aloittaa liikkeen ohjelmoinnin. Siirry Projekti-osioon, napsauta hiiren kakkospainikkeella, vie hiiri Luo-kohdan päälle ja valitse luettelosta Kansio. Nimeä kansio Skriptit tai vastaava.
Siirry uudessa kansiossa ja toista prosessi, mutta valitse luettelosta C# Script. Voit antaa tälle tiedostolle minkä tahansa nimen, mutta tämä on myös sen päätoiminnon nimi. Varmista, että uusi C#-numerosi näyttää tältä.
käyttämällä Järjestelmä. Kokoelmat;
käyttämällä Järjestelmä. Kokoelmat. yleinen;
käyttämällä UnityEngine;julkinenluokkaaCharacter_Control: MonoBehaviour {
mitätönalkaa() {
}
mitätönPäivittää() {
}
}
Vaihe 3: Käytä C#:a luodaksesi eteenpäin- ja taaksepäin liikettä nopeudella
Ennen kuin lisäät komentosarjatiedostosi funktioihin, määritä joitain julkisia muuttujia. Ensinnäkin Rigidbody tallentaa pelaajan malli. Ilmoita myös kelluke seurataksesi liikenopeutta. Nämä muuttujat menevät pääluokkaan, minkään funktion ulkopuolelle.
julkinen Jäykkä runko jäykkä runko;
julkinenkellua nopeus;
Seuraavaksi on aika lisätä yksi koodirivi Start-toimintoon. Tämä käyttää GetComponent-määritystä kuution jäykän kappaleen komponentin määrittämiseen luomaasi jäykän rungon muuttujaan.
mitätönalkaa() {
rigidbody = GetComponent < Rigidbody > ();
}
Nyt voit lisätä koodin, joka saa pelaajamallisi liikkumaan. Tämä koodi on mukava ja yksinkertainen; tarvitset vain kaksi if-lausetta, yhden eteenpäin liikkeelle ja yhden taaksepäin. Voit käyttää syötettä. GetKey määrittääksesi, milloin näppäintä painetaan. Tässä tapauksessa etsit W- ja S-näppäinten painalluksia.
Jommankumman näistä näppäimistä painaminen lisää voimaa kuution jäykkään runkoon käyttämällä jäykkää runkoa. AddForce. Voit laskea lisätyn voiman suunnan ja nopeuden kertomalla sen Z-akselin sijainnin (muunnos eteenpäin) nopeusmuuttujalla. Ei ole olemassa transform.backward-luokkaa, jota voit käyttää taaksepäin liikkeelle, mutta tämä on saavutettavissa kertomalla transform.forward arvolla -1.
jos (Syöte. GetKey("w")) {
jäykkä runko. AddForce (muunnos eteenpäin * nopeus);
}
jos (Syöte. GetKey("s")) {
jäykkä runko. AddForce((transform.forward * -1) * nopeus);
}
Tallenna C#-tiedosto ja siirry takaisin Unityyn. Etsi skripti Projekti-ruudusta ja vedä ja pudota se merkkimallin Cube päälle hierarkiassa määrittääksesi komentosarjan kyseiselle objektille. Kun valitset kuution, komentosarjan pitäisi nähdä komponenttina Tarkastaja-ruudussa. Napsauta jäykän rungon muuttujaruudun sisällä ja valitse kuutiosi jäykkä runko.
Voit nyt käyttää Play-painiketta pelin käynnistämiseen ja koodin testaamiseen. Mutta odota! On ongelma; Kuutiosi rullaa mieluummin kuin liikkuu suoraan eteenpäin. Palaa kuution tarkastajaan, etsi Rigidbody-komponentti ja valitse Pysäytä kierto X- ja Z-akselilla ennen pelin käynnistämistä uudelleen. Nyt sen pitäisi toimia.
Vaihe 4: Käytä C# luodaksesi vasemman ja oikean käännöksen vääntömomentilla
Toisin kuin taaksepäin ja eteenpäin liikkuminen, Cube-soitinmallin kääntäminen vaatii voiman, jota kutsutaan vääntömomentiksi. Tarvitset tätä varten toisen muuttujan: julkisen kellukkeen vääntömomentin arvon määrittämiseksi.
julkinenkellua vääntömomentti;
Koodi vasemmalle ja oikealle kääntymiseen tässä skriptissä on hyvin samanlainen kuin eteenpäin ja taaksepäin liikkumiseen käytetty koodi. Siellä on jos lauseke jokaiselle suunnalle, joka etsii joko D-näppäimen (käännös oikealle) tai A-näppäimen (vasemmalle) painalluksia.
Ensimmäinen vaihe kussakin if-lauseessa on käännöksen suunnan määrittäminen syötteen avulla. GetAxis-menetelmä ja määritä tulos float-muuttujalle. Käytä tämän jälkeen jäykkää runkoa. AddTorque kohdistaa pyörimisvoima Kuutiomerkkimalliin kertomalla kuution vääntömomentti, kääntö ja Z-akseli.
jos (Syöte. GetKey("d")) {
kellua turn = Syöte. GetAxis("Vaakasuuntainen");
jäykkä runko. AddTorque (transform.up * vääntömomentti * käännös);
}
jos (Syöte. GetKey("a")) {
kellua turn = Syöte. GetAxis("Vaakasuuntainen");
jäykkä runko. AddTorque (transform.up * vääntömomentti * käännös);
}
Tallenna koodisi ja palaa Unityyn testaamaan sitä. Voit säätää pelaajamallisi pyörimisen nopeutta ja nousuaikaa valitsemalla kuution ja muokkaamalla jäykän rungon massa-, veto- ja vääntömomenttimuuttujia käsikirjoituksessasi. Tässä esimerkkiprojektissa asetetaan 1 massa, 1 vastus ja 2 vääntömomentti.
Vaihe 5: Käytä C# ohjelmoidaksesi hyppäämisen
Tämän Unity-hahmoohjaimen viimeisenä elementtinä on aika luoda hyppysi. Hypyn luominen on monimutkaisempaa kuin muut käyttämäsi perusohjaimet, koska hypyn korkeuden on oltava rajoitettu. Aloita lisäämällä yksityinen looginen muuttuja seurataksesi, hyppääkö pelaaja vai ei.
yksityinenbool isJumping = väärä;
Tämä muuttuja ei tee mitään ilman testauslausetta. Tässä tapauksessa perus-if-lause, jolla tarkistetaan, onko muuttuja epätosi, tekee tempun. Saman ehdon lisääminen toiseen liikkeeseen, jos lauseet estävät pelaajaa liikkumasta hyppyjen aikana.
jos (!isJumping) {
}
Saman ehdon lisääminen toiseen liikkeeseen, jos lauseet estävät pelaajaa liikkumasta hyppyjen aikana.
jos (Syöte. GetKey("w") && !isJumping) {
jäykkä runko. AddForce (muunnos eteenpäin * nopeus);
}
!isJumping if -lauseessa tarvitset toisen if-lauseen, tällä kertaa tarkistaaksesi, onko hyppypainiketta painettu. IsJumping-muuttujan asettaminen arvoon tosi on ensimmäinen asia tässä if-lauseessa, jonka jälkeen tehdään rigidbody.angularVelocity-ilmoitus kuutioon tällä hetkellä kohdistuvien voimien poistamiseksi.
Nyt voit käyttää jäykkää runkoa. AddForce-ilmoitus lisää voimaa kuutioon sen Z-akselilla luoden hypyn ylöspäin suuntautuvan liikkeen. Lopuksi on aika kutsua eri funktiota 0,8 sekunnin kuluttua kutsuilmoituksella.
jos (!isJumping) {
jos (Syöte. GetKeyDown("avaruus")) {
isJumping = totta;
jäykkä runko. AddForce (transform.up * nopeus * 120);
rigidbody.angularVelocity = Vector3.zero;
Vedota("Move_Setter", 0.8 f);
}
}
Tämä toiminto asettaa isJumping-muuttujan takaisin arvoon false, jotta liike/hyppy on jälleen mahdollista ja 0,8 sekunnin viive estää sitä liipaisemasta liian aikaisin.
mitätönMove_Setter() {
isJumping = väärä;
}
Vaihe 6: Testaa merkkiohjainkoodisi
Tallenna tiedosto ja palaa Unityyn testaamaan kirjoittamaasi koodia. Kuten useimmat kääntäjät, Unity tarjoaa tietoja virheistä ja muista koodiisi liittyvistä ongelmista, jotta on helpompi nähdä, mitä sinun on ehkä muutettava. Voit tarkastella tämän projektin koko koodia sivustoltamme GitHub sivu.
Unity-merkkiohjainten luominen
Voit valita useista eri lähestymistavoista luodessasi hahmoohjaimen Unityssa. Fysiikan käyttö on yksi vaihtoehto, mutta voit halutessasi käyttää myös sisäänrakennettua merkkiohjainjärjestelmää.
Tämän kaltaisten eri vaihtoehtojen tutkiminen on loistava tapa oppia Unityn kaltaisista työkaluista.