Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Simbolių valdiklis gali padėti įgyvendinti paprastą judesių fiziką žaidime.

„Unity3D“ simbolių valdiklius galite pažvelgti iš kelių kampų. Jei naudojate biblioteką su galingomis klasėmis ir funkcijomis, fizikos pagrindu sukurto simbolių valdiklio kūrimas gali būti smagi vieta pradėti žaidimo kūrimą.

1 veiksmas: sukurkite sceną su grotuvu ir reljefo objektais

Atidarę Unity ir sukūrę naują projektą, galite pradėti prie savo scenos pridėdami keletą objektų. Šiuos objektus galite kurti bet kokia jums patinkančia tvarka, tačiau būkite atsargūs ir įsitikinkite, kad naudojate teisingus nustatymus. Nors šis projektas yra pagrindinis, tai puikus būdas pradėkite nuo Unity.

3D plokštumos objektas reljefui

Pirmas objektas, kurį reikia įtraukti į savo sceną, yra lėktuvas. Dešiniuoju pelės mygtuku spustelėkite hierarchijos sritį, užveskite pelės žymeklį virš

instagram viewer
3D objektasir pasirinkite Lėktuvas iš sąrašo. Galite reguliuoti lėktuvo dydį, kad gautumėte didesnį bandymo plotą, bet jums nereikia nieko daugiau daryti.

Kubo objektų grotuvo modelis

Tada laikas prie scenos pridėti kubą, kuris veiktų kaip žaidėjo modelis. Dešiniuoju pelės mygtuku spustelėkite hierarchijos sritį, užveskite pelės žymeklį virš 3D objektasir pasirinkite kubas iš išskleidžiamojo meniu. Padėkite naują kubą taip, kad jis būtų virš plokštumos, kurią taip pat pridėjote. Taip pat turite pridėti standųjį korpusą, kad kubas taptų fizikos objektu.

Pasirinkite kubą ir eikite į inspektorių. Spustelėkite Pridėti komponentą srities apačioje ieškokite standaus korpuso ir pasirinkite Tvirtas kūnas iš sąrašo, kai jis pasirodys. Pažymėkite Naudokite gravitaciją pažymėkite langelį ir palikite kitus nustatymus tokius, kokie jie yra.

Tu gali rasti nemokamas „Unity“ turtas internete kad pagyvintumėte savo projektą.

Trečiojo asmens fotoaparatas

Jūsų scenoje jau turėtų būti fotoaparatas, kurį galite naudoti kaip trečiojo asmens fotoaparatą. Padėkite fotoaparatą taip, kad jis būtų patogioje trečiojo asmens pozicijoje virš kubo. Eikite į hierarchijos sritį prieš vilkdami ir numesdami fotoaparatą ant kubo, kad sukurtumėte tėvų ir vaikų santykius. Kai tai bus padaryta, fotoaparatas automatiškai seks jūsų kubą.

Greitas testas

Nors jūsų scena dar neturi kodo, galite išbandyti iki šiol atliktą darbą. Spustelėkite žaisti mygtuką ekrano viršuje, kad įkeltumėte žaidimą. Turėtumėte pamatyti, kaip kubas nukrenta ir nusileidžia ant lėktuvo viršaus, o kamera turėtų sekti kubą jam krentant.

2 veiksmas: nustatykite C# failą

Dabar atėjo laikas sukurti C# failą, kad galėtumėte pradėti programuoti tam tikrą judesį. Eikite į skiltį Projektas, dešiniuoju pelės mygtuku spustelėkite, užveskite pelės žymeklį ant Kurti ir sąraše pasirinkite Aplankas. Pavadinkite aplanką Skriptai ar kažkas panašaus.

Naršykite naujame aplanke ir pakartokite procesą, tačiau sąraše pasirinkite C# scenarijų. Šiam failui galite suteikti bet kokį pavadinimą, tačiau tai bus ir pagrindinės jo funkcijos pavadinimas. Įsitikinkite, kad jūsų naujasis C# atrodo taip.

naudojant Sistema. Kolekcijos;
naudojant Sistema. Kolekcijos. Bendrasis;
naudojant UnityEngine;

viešasklasėCharacter_Control: MonoElgesys {
tuštumaPradėti() {
}

tuštumaAtnaujinti() {
}
}

3 veiksmas: naudokite C#, kad sukurtumėte judėjimą pirmyn ir atgal su greičiu

Prieš įtraukdami į scenarijaus failo funkcijas, deklaruokite kai kuriuos viešuosius kintamuosius. Pirmiausia yra standus korpusas, skirtas grotuvo modeliui laikyti. Taip pat paskelbkite plūdę, kad galėtumėte stebėti judėjimo greitį. Šie kintamieji patenka į pagrindinę klasę, už bet kokių funkcijų ribų.

viešas Rigidbody standus korpusas;
viešasplūdė greitis;

Tada laikas prie funkcijos Pradėti pridėti vieną kodo eilutę. Tai naudoja GetComponent deklaraciją, kad kubo standžiojo kūno komponentas būtų priskirtas jūsų sukurtam standžiojo kūno kintamajam.

tuštumaPradėti() {
rigidbody = GetComponent < Rigidbody > ();
}

Dabar galite pridėti kodą, kuris leis jūsų grotuvo modeliui judėti. Šis kodas yra gražus ir paprastas; Jums tereikia dviejų „if“ teiginių, vieno judėjimui į priekį ir kito judėjimui atgal. Galite naudoti įvestį. GetKey, kad nustatytų, kada klavišas paspaudžiamas. Šiuo atveju ieškote W ir S klavišų paspaudimų.

Paspaudus bet kurį iš šių klavišų, naudojant standųjį korpusą kubo standusis korpusas prideda jėgos. AddForce. Galite apskaičiuoti pridėtinės jėgos kryptį ir greitį, padauginę jos Z ašies padėtį (transform.forward) iš greičio kintamojo. Nėra transform.backward klasės, kurią galėtumėte naudoti judėjimui atgal, bet tai galima pasiekti transform.forward padauginus iš -1.

jeigu (Įvestis. GetKey("w")) {
tvirtas kūnas. AddForce (transform.forward * speed);
}

jeigu (Įvestis. GetKey("s")) {
tvirtas kūnas. AddForce((transform.forward * -1) * greitis);
}

Išsaugokite C# failą ir grįžkite į Unity. Raskite scenarijų projekto srityje ir nuvilkite jį ant simbolių modelio kubo hierarchijoje, kad priskirtumėte scenarijų tam objektui. Kai pasirenkate kubą, scenarijų turėtumėte matyti kaip komponentą inspektoriaus srityje. Spustelėkite standžiojo korpuso kintamojo langelį ir pasirinkite savo kubo standųjį korpusą.

Dabar galite naudoti mygtuką Play, kad paleistumėte žaidimą ir išbandytumėte savo kodą. Bet palauk! Yra problema; jūsų kubas riedės, o ne judės tiesiai į priekį. Grįžkite į kubo inspektorių, suraskite Rigidbody komponentą ir pažymėkite langelius „Freeze Rotation“ X ir Z ašyse prieš paleisdami žaidimą dar kartą. Dabar tai turėtų veikti.

4 veiksmas: naudokite C#, kad sukurtumėte posūkį į kairę ir į dešinę su sukimo momentu

Skirtingai nei judant atgal ir pirmyn, norint pasukti „Cube“ grotuvo modelį, reikia jėgos, vadinamos sukimo momentu. Tam reikia kito kintamojo: viešo plūdurio, kad priskirtumėte sukimo momento vertę.

viešasplūdė sukimo momentas;

Kodas, skirtas sukti į kairę ir į dešinę šiame scenarijuje, yra labai panašus į kodą, naudojamą judėti pirmyn ir atgal. Yra an jeigu teiginys kiekvienai krypčiai, kurioje ieškoma, ar reikia paspausti klavišą D (pasukti į dešinę) arba klavišą A (pasukti į kairę).

Pirmasis kiekvieno if teiginio žingsnis yra posūkio krypties nustatymas naudojant įvestį. GetAxis metodą ir priskirkite rezultatą plaukiojančiam kintamajam. Po to naudokite standųjį korpusą. AddTorque, kad sukimosi jėga būtų pritaikyta kubo simbolio modeliui, padauginus kubo sukimo momentą, posūkį ir Z ašį.

jeigu (Įvestis. GetKey("d")) {
plūdė posūkis = įvestis. GetAxis("Horizontalus");
tvirtas kūnas. AddTorque (transform.up * sukimo momentas * posūkis);
}

jeigu (Įvestis. GetKey("a")) {
plūdė posūkis = įvestis. GetAxis("Horizontalus");
tvirtas kūnas. AddTorque (transform.up * sukimo momentas * posūkis);
}

Išsaugokite kodą ir grįžkite į „Unity“, kad jį išbandytumėte. Galite reguliuoti grotuvo modelio sukimosi greitį ir įsibėgėjimo laiką, pasirinkdami kubą ir scenarijuje redaguodami standaus korpuso masės, tempimo ir sukimo momento kintamuosius. Šiame pavyzdiniame projekte nustatyta 1 masė, 1 pasipriešinimas ir 2 sukimo momentai.

5 veiksmas: naudokite C#, kad užprogramuotumėte šokinėjimą

Kaip paskutinis šio Unity simbolių valdiklio elementas, laikas sukurti savo šuolį. Šuolio kūrimas yra sudėtingesnis nei kiti pagrindiniai valdikliai, su kuriais dirbote, nes šuolis turi būti riboto aukščio. Pradėkite pridėdami privatų loginį kintamąjį, kad galėtumėte stebėti, ar žaidėjas šokinėja, ar ne.

privatusbool isšokinėja = klaidinga;

Šis kintamasis nieko nepadarys be teiginio, kad jį patikrintų. Šiuo atveju pasiteisins pagrindinis if teiginys, skirtas patikrinti, ar kintamasis yra klaidingas. Tos pačios sąlygos pridėjimas prie kito judesio, jei teiginiai neleis žaidėjui judėti šuolių metu.

jeigu (!yra šokinėja) {
}

Tos pačios sąlygos pridėjimas prie kito judesio, jei teiginiai neleis žaidėjui judėti šuolių metu.

jeigu (Įvestis. GetKey("w") && !yra šokinėja) {
tvirtas kūnas. AddForce (transform.forward * speed);
}

Teiginyje !isJumping if jums reikia kito if teiginio, šį kartą norint patikrinti, ar nebuvo paspaustas šuolio mygtukas. Pirmas dalykas, kurį reikia padaryti šiame if teiginyje, kintamąjį isJumping nustatyti į teisingą, o po to atlikti rigidbody.angularVelocity deklaraciją, kad būtų pašalintos kubui šiuo metu taikomos jėgos.

Dabar galite naudoti standųjį korpusą. AddForce deklaracija, skirta pridėti jėgą kubui jo Z ašyje, sukuriant šuolio judesį aukštyn. Galiausiai atėjo laikas naudoti iškvietimo deklaraciją, kad po 0,8 sekundės būtų iškviesta kita funkcija.

jeigu (!yra šokinėja) {
jeigu (Įvestis. GetKeyDown("erdvė")) {
isšokinėja = tiesa;
tvirtas kūnas. AddForce (transform.up * greitis * 120);
rigidbody.angularVelocity = Vector3.zero;
Invoke ("Move_Setteris", 0.8 f);
}
}

Ši funkcija grąžina kintamąjį isJumping į false, kad judėjimas / šokinėjimas vėl būtų galimas, o 0,8 sekundės delsa neleidžia jam įsijungti per anksti.

tuštumaMove_Setteris() {
isšokinėja = klaidinga;
}

6 veiksmas: patikrinkite savo simbolių valdiklio kodą

Išsaugokite failą ir grįžkite į Unity, kad patikrintumėte parašytą kodą. Kaip ir dauguma kompiliatorių, Unity teikia informaciją apie klaidas ir kitas su jūsų kodu susijusias problemas, kad būtų lengviau suprasti, ką gali reikėti pakeisti. Visą šio projekto kodą galite peržiūrėti mūsų svetainėje GitHub puslapį.

Vienybės simbolių valdiklių kūrimas

Kurdami simbolių valdiklį Unity galite pasirinkti iš įvairių metodų. Fizikos naudojimas yra viena iš galimybių, tačiau, jei norite, galite naudoti ir įmontuotą simbolių valdiklio sistemą.

Įvairių tokių parinkčių tyrinėjimas yra puikus būdas sužinoti apie tokius įrankius kaip „Unity“.