Reklaam
Interneti-majanduse üllatav omadus on indie-videomängude tõus. Kunagi kui tuhande inimese, mitme miljoni dollarise triple-A-stuudio eksklusiivne domeen on välja töötatud mitmeid tööriistu, mis tuua kaasaegsed mänguarendusressursid üksikisikute kätte või programmeerijate ja disainerite väikesed sihtotstarbelised kollektsioonid. Oleme varem arutanud parimad indie-mängud 10 indie-mängu, nii hea, et unustate, et nad üldse on indie-mängudVõib siiski olla aegu, kus soovite midagi erinevat indie-normist. Mäng, mis järgib indie-väärtusi, kuid on siiski tehtud kvaliteediga, millest tuntud AAA mängud on tuntud. Pealkirjad nagu ... Loe rohkem , nii et veenduge, et uurite neilt inspiratsiooni selle kohta, mida saab saavutada selliste tööriistadega nagu Unity.
Need indie-mängude arendusmeeskonnad on demonstreerinud paindlikkust ja riskitaluvust, mis paljudel juhtudel võimaldab neil mänguinnovatsiooni kiiremini edasi viia kui nende suured eelarvekaaslased. Viimastel aastatel on esilinastunud mitmeid šokeerivalt edukaid indie-tiitleid, sealhulgas
Minecraft, Limboja Super liha poissja isegi kui teil pole vaja taoliste mängude tegemiseks vajalikke oskusi, saate seda teha looge mängu abil Buildbox Kuidas teha videomängu nädalas Buildboxi abilOn olemas programm, mis muudab mängude arendamise uskumatult lihtsaks isegi neile, kel pole videomängude kujundamisel kogemusi. Seda nimetatakse Buildboxiks. Sellepärast peaksite seda proovima. Loe rohkem .Indie-mängude kiiresti areneval maastikul Ühtsus on kujunenud kui de facto standard: selle madalad kulud, kasutusmugavus ja lai funktsioonide komplekt muudavad selle ideaalseks mängu kiireks arendamiseks. Ühtsus on nii paindlik, et saate isegi tehke oma kohandatud mängukontrollerid Kuidas teha kohandatud mängukontrollerit Arduino ja Unity abilKas olete kunagi tahtnud kujundada oma mängukontrolleri? See on lihtsam kui arvate! Loe rohkem natuke DIY-ga tean, kuidas!
Isegi suured stuudiod, näiteks CCP Eve Online) kasutada seda mängukontseptsioonide kiireks prototüüpimiseks. Unity pakub „mängu mootorit karbis“ - füüsikat ja renderdusmootorit, millel on konksud mitmeks skriptikeeleks, mida saab kohandada praktiliselt iga videomängu žanriga.
Kuigi Unity pakub mängukeskkonnaga manipuleerimiseks visuaalset redigeerijat, pole Unity mängude looja tööriist null programmeerimiseks. See nõuab tulemuste saamiseks programmeerimist, kuid annab teile ka palju paindlikuma ja võimsama tööriista, kui ükski mängude valmistaja programm võiks.
Ühtsus ei tee teie heaks tööd, kuid see vähendab sisenemise tõkkeid oluliselt. Alustades täiesti nullist C ++ ja OpenGL-iga, võib kuluda päevi, kuni jõutakse punkti, kus ekraanil on tegelikult midagi pakutud. Unityt kasutades võtab see umbes kümme sekundit. Ühtsus annab mängude loomise põhielemendid algajatele programmeerijatele kiirel ja intuitiivsel viisil.
Täna juhendan teid kõike, mida peate teadma Ühtsuses mängu tegemiseks, mis on jagatud kümneks peamiseks peatükiks:
§1 - ühtsuse versioonid
§2 - Unity installimine
§3 - Lühike sissejuhatus objektorienteeritud paradigmasse
§4 –Ühtsuse alused
§5 - näide: mängu põhielemendid
§6 - skriptimine ühtsuses
§7 - näide: skriptimispong
§8 - dokumentatsiooni uurimine / lisateave
§9 - mängu ehitamine / iseseisvaks rakenduseks kompileerimine
§10-Lõppmärkused
1. Ühtsuse versioonid
Unityl on kaks põhimaitset: profi- ja tasuta versioon. Seal on a erinevuste arv, kuid laias laastus toetab profiversioon mitmeid visuaalseid täiustusi (näiteks reaalajas pehmed varjud ja järeltöötlus) ja suur hulk suhteliselt väikseid funktsioone, mis on keerukate jaoks eriti kasulikud mängud.
See tähendab, et enamiku suhteliselt lihtsate mängude jaoks, mida võiksite luua, on Unity tasuta versioon täiesti piisav. Allpool kirjeldame peamised erinevused üksikasjalikumalt huviliste jaoks.
1.1 Hinnakujundus
Unity tasuta versioon on muidugi tasuta. Siiski on mõned piirangud: Unity tasuta versiooni ei saa litsentsida ühelegi ettevõttele, mille aastane sissetulek on suurem kui $100,000. Ehkki sellised organisatsioonid jäävad selle juhendi raamest välja, on kahtlustatav, et te võite selliseks organisatsiooniks saada, kuid tõenäoliselt on mõistlik proovida Pro-versiooni.
Pro versioon Unity on $75 kuus või $1500 püsilitsentsi saamiseks ja sellel pole piiranguid sellega, mida saate sellega loodud mängudega teha. Saadaval on ka 30-päevane tasuta prooviversioon, mida kasutame selle juhendi jaoks, et anda teile võimalikult täielik ülevaade saadaolevatest funktsioonidest. Üheaastane tudengilitsents on saadaval ka läbi Studica jaoks $129.
1.2 Omadused
Unity tasuta versioonis puudub palju funktsioone. Kõige olulisemad erinevused on siiski järgmised: Unity tasuta versioonil pole mitmeid renderdamisvalikuid, mis seda võimaldaksid parema väljanägemisega, kiiremini töötavad mängud (LOD tugi, ekraaniruumi järeltöötlus, edasijõudnud varjundid, reaalajas pehmed varjud ja edasilükatud renderdamine). Samuti puudub see täielikult animatsioonisüsteem mechanimja mõned AI-tööriistad.
Üldiselt on keerukate suuremahuliste projektide või projektide puhul, kus oluline on graafiline jõudlus, pro-versioon. Kasutan profiversiooni, kuna arendan virtuaalse reaalsuse mänge Oculus Rift Oculus Rifti ülevaadeVirtuaalne reaalsus pole uus, kuid see on lõpuks taskukohane ja meie käsutuses. Pärast nelja aastat ja kahte arendusprototüüpi on saabunud Oculus Rifti lõpptarbija väljaanne. Loe rohkem ja peakomplektiga korrektseks suhtlemiseks on vajalik ekraaniruumi järeltöötluse tugi.
2. Unity installimine
Ühtsuse installimine on lihtne. Käivitatava faili saate alla laadida saidist unity3d.com/get-unity/download.
Pärast allalaadimist käivitage see ja järgige installija juhiseid. Kui installimine on lõpule jõudnud, ilmub aken pealkirjaga "Aktiveeri oma Unity litsents". Märkige ruut „Aktiveeri Unity Pro tasuta 30-päevane prooviversioon” ja seejärel „OK”.
Palju õnne! Nüüd on teil Unity Pro 30-päevane prooviversioon. Kui prooviversioon ei aegu, siis ei soovi prooviversiooni osta ja tasuta olemasolevat sisu säilitada.
3. Lühike sissejuhatus objektorienteeritud paradigmasse
Enne Unityga alustamist on oluline, et tutvustaksime natuke põhitõdesid. Ühtsus toetab mõlemat C # ja JavaScript jaoks mängude programmeerimine 7 Unity mängu arendamise keelt, mida õppida: milline on parim?Kas soovite mängude arendamist Unity'is alustada? Peate tundma ühte neist Unity-ga ühilduvatest keeltest. Loe rohkem ; teeme selle õpetuse jaoks koostööd numbriga C #.
Esiteks, kui te pole kunagi varem programmeerinud, pange see õpetus kõrvale ja veetage paar päeva Microsofti kaudu C # Keelepraimer kuni tunnete end mugavalt keele kasutamisel lihtsate ülesannete jaoks.
Kui soovite midagi C #-st pisut erinevat (kuid mitte tingimata keelt, mida saate Unity'is kasutada), siis vaadake meie juhendit kuus lihtsamat programmeerimiskeelt algajatele 6 lihtsamat programmeerimiskeelt, mida õppida algajateleProgrammeerimise õppimine tähendab õige keele leidmist sama palju kui ka redigeerimisprotsessi. Siin on kuus parimat lihtsamat programmeerimiskeelt algajatele. Loe rohkem .
Kui olete varem programmeerinud kohustuslikus või objektorienteeritud keeles, näiteks C või Java, nihutage praimerit ja tutvuge sellega, kuidas C # erineb teistest varem kasutatud keeltest. Mõlemal juhul ärge jätkake õpetusega enne, kui tunnete end C # abil lihtsate probleemide lahendamisel mugavalt (näiteks kui ma peaksin küsima kui peate kirjutama programmi, mis prindib esimese saja algarvu, peaksite saama selle programmi kirjutada ilma konsulteerimata Google).
Kõige olulisem mõiste, mida siin mõista, on objektorienteeritud paradigma Kust sai programm "Object Oriented"?Objektidele orienteeritud pole lihtsalt juhuslik häälesõna, mida kuulete programmeerimisringides. Nime taga on põhjus - aga mis siis? Liituge minuga, kui uurin programmeerimise kontseptsioonide põhialuseid ja selgitan ... Loe rohkem (lühendatud kui OOP). Objektorienteeritud keeltes on programmid jagatud funktsionaalseteks ühikuteks, mida nimetatakse Objektid. Igal objektil on oma privaatsed muutujad ja funktsioonid. Objektspetsiifilisi funktsioone kutsutakse meetodid.
Idee on siin modulaarsus: iga objekt isoleeritakse ja sunnitakse teisi objekte sellega suhtlema selle meetodite abil saate vähendada võimalike tahtmatute koostoimingute arvu - ja laiendades seda ka vead. Samuti saate luua objekte, mida saate hiljem uuesti kasutada ilma muudatusteta. Ühtsuses ehitate neid objekte ja kinnitate need mänguüksused (kelle käitumist nad valitsevad).
Objektid on hetkest alates klassid: klass on lihtsalt fail, mis kirjeldab teie objekti. Niisiis, kui soovite a Mook objekti, mis tegeleb teie mängus vaenlase AI-ga, kirjutaksite klassi „Mook” ja lisate selle faili igale vaenlase üksusele. Mängu käivitamisel varustatakse iga vaenlane objekti Mook koopiaga.
Objektile uue skripti lisamine näeb välja järgmine:
Esiteks vali objekt ja mine Inspektor. Klõpsake nuppu Lisage komponent nuppu.
Minema uus skript, sisestage soovitud nimi ja klõpsake nuppu luua ja lisada.
Nüüd on teil uus skript, mida saate muuta, topeltklõpsates sellel!
Klassifail näeb välja umbes selline:
UnityEngine'i kasutamine; avaliku klassi Mook: MonoBehaviour {privaatne ujuki tervis; tühine algus () {tervis = 100; } tühine värskendus () {if (tervis> 0) {/ * Kui otsite mängijat teel, siis otsige mängijat, tapke ta löögi korral ja eemaldage juhuslik kogus tervist * /}} }
Jagageme selle järgmiselt:
- UnityEngine'i kasutamine: See rida ütleb C #-le, et tahame kasutada Unity raamatukogusid, mis võimaldavad meil ühendust Unity mängu mootoriga.
- Avalik klass Mook: MonoBehaviour:See rida kuulutab klassi ja selle nime - Mook.
- Privaatne ujuki tervis: See kuulutab eraklassi muutuja (mida saab muuta ainult klassi seestpoolt). Muutujale antakse väärtus eurodes Alusta.
- Kehtetu algus (): See kuulutab meetodi nimega Alusta. Start on spetsiaalne meetod, mis töötab ainult üks kord, kui mäng alguse saab.
- Tühjendatud värskendus (): Värskendus on veel üks eriline meetod, mis töötab igas kaadris. Suurem osa teie mänguloogikast läheb siia.
- // kui kohtad mängijat teel, tapa ta: See rida on kommentaar (C # ignoreerib iga topeltkaldjoonega algavat rida). Kommentaare kasutatakse enda meeldetuletamiseks, mida konkreetsed koodibitid teevad. Sel juhul kasutatakse seda kommentaari keerukama koodiploki jaoks, mis tegelikult teeb seda, mida kommentaar kirjeldab.
Koos Alusta ja Uuenda, saate oma meetodeid kiirendada peaaegu suvalise nimega. Teie loodud meetodeid ei rakendata, kui neid ei kutsuta. Kuulutagem välja hüpoteetilise klassi meetod, mida nimetatakse addTwoNumbers mis liidab kokku kaks numbrit:
avalik ujuk addTwoNumbers (ujuk a, ujuk b) {tagastama a + b; }
See kuulutab avaliku (muudele objektidele juurdepääsetava) meetodi, mis tagastab ujuki, nn addTwoNumbers, mille sisendiks võetakse kaks ujukit (nn a ja b). Seejärel tagastatakse väljundina kahe väärtuse summa.
Selle meetodi kutsumine samast klassist (näiteks seestpoolt) Uuenda) näeb välja selline:
float tulemus = addTwoNumbers (1, 2);
Meetodi kutsumine teisest klassist on sarnane:
addTwoNumbers näiteks; float tulemus = instance.addTwoNumbers (1, 2);
Jällegi loob see lihtsalt meie klassi eksemplari, pääseb juurde sobivale meetodile ja söödab meile numbrid, mida me soovime lisada, ning siis salvestab tulemuse tulemus. Lihtne.
Kui teie skript on lisatud objektile, millel on eriomadused (näiteks osakeste eraldaja), millele ei pääse juurde tavalises GameObjecti parameetrite komplektis saate valida, kas seda saab käsitada erinevat tüüpi mänguüksusena GetComponent meetod.
Selle süntaks näeb välja järgmine:
GetComponent() .Play ();
Kui mõni neist on teile võõras, minge tagasi ja minge läbi C # praimeri. Jätkates säästab see teid palju pettumust.
4. Ühtsuse põhitõed
Selles jaotises tutvume Unity mootori põhimehaanikaga. Unity töövoog läheb umbes nii:
- Looge entiteet mängu rolli täitmiseks (tühi GameObjects saab kasutada abstraktsete loogiliste ülesannete jaoks).
- Kirjutage või leidke klassifail ja lisage see olemile skriptina (kasutades Lisage komponent nuppu inspektor vaade.
- Jookse > test > silumine > korda kuni see töötab ja liikuge mängu järgmise elemendi juurde.
Unity pakub arvukalt põhilisi vaatekaarte, mida saab kasutaja maitsele vastavalt muuta. Viis suurt on:
- Mäng: kuvab mängu jooksva eksemplari, millega saate suhelda ja testida.
- Stseen: pakub staatilist redigeeritavat versiooni mängumaailm.
- Inspektor: võimaldab teil muuta üksikuid mängumaailmas, valides need ruudust toimetaja sakk.
- Projekt: võimaldab sirvida projekti faile ja lohistada mudeleid, materjale ja muid ressursse projekti toimetaja vahekaardil, et neid mängumaailma paigutada.
- Hierarhia: sellel vahekaardil kuvatakse kõik objektid maailmas, võimaldades teil klikkides ja lohistades leida stseenist kaugeid objekte ja vanemolite.
Kõigi nende asjade asukohti leiate allolevalt skeemilt:
4.1 Ühtsusüksused
4.1.1 Silmad
Võrgusilmad on tee 3D-geomeetria on esindatud Ühtsuses. Võite kasutada Unity sisseehitatud funktsiooni ürgne objekte (kuubikud, sfäärid, silindrid jne) või importige 3D-mudeleid modelleerimispaketist nagu Blender Blenderiga alustamine: 7 fantastilist õpetust algajatele3D-modelleerimine on suurepärane viis loovuse kasutamiseks, hoides samas ühendust oma tehnilise poolega. Siin on mõned vinge tasuta õpetused. Loe rohkem või Maya Õppimine Maya 2016: kust alustadaMaya on 3D-animatsioonide jaoks kasutatav tööriist, kuid sellega kaasneb uskumatult järsk õppimiskõver. Milline hea õppematerjal seal on? Loe rohkem . Unity toetab mitmesuguseid 3D-vorminguid, sealhulgas .fbxja .3ds.
Võrgusilmadega manipuleerimise põhitööriistad on liidese vasakus ülanurgas olevad skaleerimise, pööramise ja tõlkimise nupud. Need nupud lisavad redaktori vaates olevatele mudelitele juhtikoonid, mida saab seejärel kasutada nendega ruumis manipuleerimiseks. Objekti tekstuuri või füüsikaliste omaduste muutmiseks valige need ja kasutage nuppu inspektor vaade analüüsida materjal ja jäik keha elemente.
4.1.2 GUI elemendid
Traditsioonilisi GUI-spreid ja teksti saab kuvada, kasutades GUI tekst ja GUI tekstuur GameObjects redaktoris. Kuid UI elementide käsitlemiseks on robustsem ja realistlikum viis kasutada 3D-tekst ja Neljakesi GameObjects (läbipaistvate tekstuuride ja valgustamata läbipaistva varjundiga) HUD-elementide paigutamiseks mängumaailma üksustena.
Aastal hierarhia neid mänguelemente saab lohistada põhikaamerale, et neist saaks lapsi, tagades, et nad kaameraga liiguvad ja pöörlevad.
GUI-elementide (teksti ja tekstuuride) suurust ja ulatust saab kohandada inspektori vahekaardi vastavate väljade abil.
4.1.3 Materjalid
Materjalid on tekstuuride ja varjutajad Selgitatud on viis olulist arvutimängu tingimustKui mängite mängu konsoolil, käsitletakse teie tehnilisi üksikasju. Mõned mängijad eelistavad seda, kuid personaalarvutimängijad naudivad sageli suuremat kontrolli mängu üle ... Loe rohkem , ja neid saab projekti vahekaardilt otse mänguobjektidele lohistada. Unity Pro'ga on kaasas suur arv varjureid ja saate nende külge kinnitatud tekstuuri kohandada, kasutades objekti, millele nad on rakendatud, vahelehte Inspektor.
Tekstuuri importimiseks teisendage see a-ks .jpg, .pngvõi .bmpja lohistage see kausta varad kaust Unity projekti kataloogi all (see kuvatakse kataloogis Minu dokumendid algselt). Mõne sekundi pärast ilmub redaktorisse laadimisriba. Kui see on valmis, leiate pildi tekstuurilt pildi all projekti sakk.
4.1.5 Tuled
Tuled on GameObjects mis projitseerib maailma sära. Kui teie stseenis pole ühtegi valgust, joonistatakse kõik polügoonid samal heledustasandil, andes maailmale tasase, väljapestud ilme.
Tulesid saab paigutada, pöörata ja neil on mitmeid sisemisi omadusi, mida saate kohandada. intensiivsus liugur reguleerib valguse heledust ja vahemik kontrollib, kui kiiresti see kaob.
Juhendis stseenivaade näitab teile valgustuse maksimaalset ulatust. Soovitud efekti saavutamiseks mängige mõlema seadistusega. Samuti saate reguleerida valguse värvi, mustrit (küpsis pinnale, millele valgus on suunatud, ja milline hõõglamp ilmub ekraanile otse valgust vaadates. Küpsist saab kasutada realistlikumate valgusmustrite võltsimiseks, dramaatiliste valevarjude loomiseks ja projektorite simuleerimiseks.
Kolm peamist tüüpi valgust on kohapeal, punktja suund.
Kohtvalgustid omada asukohta 3D-ruumis ja projitseerida valgust ainult ühes suunas muutuva nurga koonuses. Need sobivad hästi taskulampide, prožektorite jaoks ja annavad üldiselt valgustuse täpsemat juhtimist. Kohtvalgustid võivad varje heita.
Punkttuled omada asukohta 3D-ruumis ja valgustada valgust ühtlaselt igas suunas. Punktvalgustid ei heida varje.
SuunatuledLõpuks kasutatakse neid päikesevalguse simuleerimiseks: nad projitseerivad valgust suunas, mis oleks justkui lõpmata kaugel. Suunatuled mõjutavad kõiki stseeni objekte ja võivad tekitada varje.
4.1.6 Tahkete osakeste süsteemid
A Osakeste süsteem on GameObject mis genereerib ja kontrollib sadu või tuhandeid osakesi üheaegselt. Osakesed on väikesed, optimeeritud 2D-objektid, mida kuvatakse 3D-ruumis. Tahkete osakeste süsteemid kasutavad lihtsustatud renderdamist ja füüsikat, kuid suudavad tuhandeid üksusi kuvada reaalajas ilma nokitsemiseta, muutes need ideaalseks suitsu, tule, vihma, sädemete, võluefektide ja muu jaoks.
Nende mõju saavutamiseks on palju parameetreid, mida saate muuta, ja pääsete neile juurde, kuues osakeste süsteemi all komponentide redaktor > osakeste süsteemi valimine > inspektori vahekaardi avamine. Saate muuta iga osakese suurust, kiirust, suunda, pöörlemist, värvi ja tekstuuri ning seada enamik neist parameetritest muutuma ka aja jooksul.
All kokkupõrge atribuuti, kui lubate selle ja seate simulatsiooni ruumi väärtuseks maailm saate osakesi, mis põrkuvad maailma objektidega, ja mida saab kasutada paljude realistlike osakeste efektide jaoks, sealhulgas vihm, liikuv vesi ja sädemed.
5. Näide: mängu põhielemendid
Selle õpetuse jaoks teeme lihtsa mängu Pong - midagi, mida oleme varem mitu korda meisterdanud:
- Arduino klassikaline pong Kuidas klassikalist pingimängu uuesti luua Arduino abilPong oli esimene videomäng, mis massiturule jõudis. Esimest korda ajaloos toodi perekonna koju tänu videomängule tänu Atari 2600 -le ... Loe rohkem
- Arduino OLED pong Arduino retro mängimine OLED-ekraanigaKas olete kunagi mõelnud, kui palju tööd võtab enda retro mängude kirjutamine? Kui lihtne on Pongil Arduino koodi kodeerida? Loe rohkem
Selles jaotises käsitleme põhielementide korraldamist - skriptimisõpetus tuleb hiljem.
Esiteks jagagem Pongi mäng selle põhikomponentideks. Esiteks vajame kahte aeru ja palli. Pall lendab ekraanilt eemal, nii et soovime mehhanismi selle lähtestamiseks. Samuti soovime, et tekst kuvaks praeguse partituuri ja selleks, et näidata teile kõiki Ühtsuse põhielemente, tahame palli lüües väljamõeldud osakeste efekti. Kogu mäng peab olema dramaatiliselt valgustatud.
See jaguneb a-ks kuuliobjekt (kera), a kudeja, kaks mõlatuge koos osakeste kiirgajad lisatud, a 3D-teksti olemja a kohtvalgus. Selle õpetuse jaoks kasutame vaikimisi füüsilist materjali põrgatama, koos põrgatama kombain seatud korrutada. Kümne ekraanipildi korral näeb seade välja selline:
Esiteks looge kuup rekvisiit aeru jaoks.
Skaleerige see korralikult, dubleeri see, ja pane a kera palli jaoks mõeldud aerude vahel.
Seejärel looge a 3DText objekt ja kaal ja positsioon õigesti, muutes fondi suurus atribuut vähem pikslitega pildi saamiseks.
Järgmisena looge kaks osakeste süsteemid, valige soovitud omadused ja kinnitage need aerudega.
Järgmisena soovite positsioneerige ja pöörake kaamerat nii, et see raamib stseeni õigesti. Kui kaamera on valitud, näete paremas alanurgas kaamera vaate väikest eelvaadet.
Enne mängu lõppu peame looma kaks täiendavat kuubikut, mis oleksid kaitserauad, et pall ei põrkaks mänguala alt välja. Saame muuta need nähtamatuks, eemaldades märke võrgusilma renderdaja sisse inspektori sakk.
Kui vajutate mängu, näete nüüd meie mängu põhielemente. Nad ei tee veel midagi, kuid jõuame selleni!
Nüüd, kui see seadistus on olemas, räägime sellest, mis on seotud nende elementide skriptimisega mängu tegemiseks.
6. Skriptimine Ühtsuses
Kui olete skripti objektile lisanud, saate seda redigeerida, topeltklõpsates sellel inspektor. See avaneb MonoDevelop, Unity vaikearenduskeskkond. Sisuliselt on Monodevelop tekstiredaktor funktsioonidega, mis on spetsiaalselt optimeeritud programmeerimise suunas.
Märksõnad ja kommentaarid on esile tõstetud sinine ja rohelineja numbrilised väärtused ja stringid kuvatakse punane. Kui olete kasutanud Eclipse või muud IDE-d, on MonoDevelop väga sarnane. Sa saad ehitama oma skripte redaktorist, et kontrollida süntaksivigu, näiteks:
Üldiselt peate skripti ühtsusega suhtlemiseks viitama elementidele, mis skripti omaval objektil on (nende elementide loendit näete jaotise inspektor vahekaart, kui vastav objekt on valitud). Seejärel saate soovitud muudatuste tegemiseks helistada meetoditele või määrata kõigi nende elementide jaoks muutujad.
Kui soovite, et objekti skript mõjutaks mõne muu objekti atribuute, saate luua tühja GameObject muutuja skriptis ja kasutage inspektor et määrata see stseeni teisele objektile.
Objektide loetelu võib olla järgmine (võetud meie ülaltoodud näite ühe aeru inspektori vaatest):
- Muutke
- Kuup (silmafilter)
- Box Collider
- Mesh Renderdaja
Objekti kõiki neid aspekte saab skripti kaudu mõjutada. Järgnevalt vaatame täpselt, kuidas.
6.1 Muutke
Unity-s asuva GameObjecti teisendusfunktsioonid kontrollivad selle objekti füüsilisi parameetreid: selle kaal, selle positsioon, ja selle orienteerumine. Neile pääsete juurde skripti sees järgmiselt:
teisend.positsioon = newPositionVector3; transform.rotation = newRotationQuaternion; transfor.localScale = newScaleVector3;
Ülaltoodud näidetes on nimetatud muutujad nimedes täpsustatud tüübid. Siin on mõned olulised üksikasjad: asukoht ja skaala, nagu arvata võiks, salvestatakse kujul Vektor3. Juurdepääs on X, Yja Z nende komponendid (näiteks teisend.positsioon.y annab teile objekti kauguse nulltasapinnast).
Kuid vältimiseks pingutuslukk, pöördeid käsitletakse kui Kvaternioonid (neljakomponendilised vektorid). Kuna käsitsi manipuleeritavad kvaternioonid ei ole intuitiivsed, saate pöördeid manipuleerida Euleri nurkade abil, kasutades Kvaternioon. Euler selline meetod nagu:
transform.rotation = Kvaternioon. Euler (samm, kääne, rull);
Kui soovite objekte sujuvalt ühest kohast teise teisaldada, leiate Slerp abiks on kvaternioonide ja vektor3 meetod. Slerp võtab kasutusele kolm argumenti - hetkeseis, lõppseis ja muutuste kiirus ning interpoleerib nende vahel etteantud kiirusel sujuvalt. Süntaks näeb välja selline:
transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);
6.2 Renderdaja
Ühtsuse renderdamisfunktsioonid võimaldavad teil juhtida rekvisiitide pindade ekraanile kuvamise viise. Saate tekstuuri ümber määrata, värvi muuta ning objekti varje ja nähtavust muuta. Süntaks näeb välja selline:
renderdaja.enabled = vale; renderdaja.materjal.värv = uus värv (0, 255, 0); renderdaja.material.mainTexture = myTexture; renderdaja.materiaal.shader = newShader;
Enamikul neist on üsna selged funktsioonid. Esimene näide muudab vaadeldava objekti nähtamatuks: kasulik trikk paljudes olukordades. Teine näide määrab uue RGB värv (nimelt roheline). Kolmas määrab peamise hajusa tekstuuri uuele tekstuurimuutujale. Viimane näide muudab objekti materjali varjundi äsja määratletud shaderi muutujaks.
6.3 Füüsika
Ühtsuse juurde kuulub integreeritud füüsikamootor - midagi sellist füüsika liivakasti mängud Smash, Drive & Build: 3 vinge füüsika liivakasti simulaatorit Loe rohkem kõik kasutada. See võimaldab teil määrata objektide füüsikalised omadused ja lasta nende simulatsiooni üksikasjadel teie eest käidelda. Üldiselt on selle asemel, et proovida oma füüsikat õpiku ja teisendussüsteemi abil rakendada, selle asemel, et Unity füüsikamootorit võimalikult suures ulatuses kasutada, on lihtsam ja jõulisem.
Kõik füüsika rekvisiidid nõuavad põrkajad. Tegeliku simulatsiooni endaga tegeleb aga a jäik keha, mida saab lisada kausta inspektor vaade. Jäigad kehad võivad olla kinemaatiline või mittekinemaatiline.
Kinemaatilise füüsika rekvisiidid põrkuvad (ja mõju) mittekinemaatilise füüsika rekvisiitidega nende ümber, kuid kokkupõrge ise neid ei mõjuta. Staatilised kinemaatilised rekvisiidid on vanasõnalised liikumatud objektid ja liikuvad kinemaatilised objektid vanasõna peatamatu jõud (rekordi korral põrkudes läbivad nad lihtsalt kõik muud).
Lisaks saate reguleerida objekti nurkkiiret (kui palju energiat selle keerutamiseks kulub), muuta selle massi, dikteerida, kas seda mõjutab gravitatsioon või mitte, ja rakendada sellele jõudusid.
Näited:
jäik kere.nurkDrag = 0,1f; jäik keha.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; jäik keha. AddForce (teisendamine edasi * 100);
Need on kõik üsna iseenesestmõistetavad. Ainus, mida siin tähele panna, on selle kasutamine teisendada edasi. Kõigil Vector3-l on kolm komponenti (. edasi, .upja õigus), mis on neile ligipääsetav ja nendega pöörlev (edasi on sinise noole suund redaktoris). teisendada edasi märksõna on lihtsalt praeguse objekti suuruse 1 suuruse pärisuunaline vektor. Objektile suurema jõu tekitamiseks võib selle korrutada ujukiga. Võite ka viidata teisendus ja teisendama.õigusja eitada neid vastupidiste tulemuste saamiseks.
6.4 Kokkupõrge
Sageli tahaksite mängu ehitades, et kokkupõrge põhjustab teie koodis oleku muutuse, lisaks füüsika simulatsioonile. Selleks vajate kokkupõrke tuvastamise meetod.
Unity'is kokkupõrgete tuvastamiseks on vaja teatud määral ettevalmistustööd. Esiteks vajab vähemalt üks kokkupõrke objekt a mittekinemaatiline jäik keha selle külge kinnitatud. Mõlemal objektil peavad olema korrektsed põrkeseadmed, mis peavad olema päästikuta. Mõlema objekti kogukiirus peab olema piisavalt madal, et need tegelikult põrkuvad, selle asemel, et lihtsalt üksteiselt läbi libiseda.
Kui olete saanud kõik hooldatud, saate kontrollida kokkupõrget, pannes spetsiaalse kokkupõrke tuvastamise meetodi skripti juurde objektile, millega soovite kokkupõrget kontrollida. Meetod näeb välja järgmine:
tühine OnCollisionEnter (muu kokkupõrge) {// tehke siin asju. }
See meetod käivitatakse automaatselt esimese kaadri ajal, kui mõni teine objekt teie objekti puudutab. Kokkupõrkeüksus muud on viide teie löödud objektile. Võite näiteks sellele viidata mänguobjekt, jäik kehaja muuta omadused, et sellega mitmel viisil manipuleerida. Kuigi OnCollisionEnter on tõenäoliselt kõige tavalisem funktsioon, mida kasutate, saate seda ka kasutada OnCollisionExit ja OnCollisionStay (koos muul moel identse süntaksi ja kasutamisega), mis aktiveeruvad vastavalt esimese kaadri ajal, mille puhul lõpetate objektiga kokkupõrke, ja iga kaadri ajal, millega kokku puutute.
Mõnikord võib olla kasulik teha ka nn kiirhääling. Kiirgusülekandes lõpmata õhuke joon (a kiir) valatakse läbi maailma mingist päritolust, mööda mõnda vektorit ja kui see midagi tabab, tagastatakse esimese kokkupõrke asukoht ja muud üksikasjad. Kiirülekande kood näeb välja järgmine:
RaycastHit tabas; kui (füüsika. Raycast (teisendus, positsioon, -Vektor3.üles, väljalülitatud)) {float distanceToGround = hit.distance; }
See võtab kiirguse aktiivse objekti asukohast piki -Vector3.up (otse alla) ja seob muutuja lööma esimese objektiga, millega see kokku põrkub. Kui teie kiir on midagi tabanud, pääsete juurde hit.distance - teha kindlaks, kui kaugel see on, või lööma. GameObject lüüa saanud objektiga manipuleerimiseks.
Niisuguseid kiirteülekandeid saab kasutada laskurite jaoks, et teha kindlaks, millele püstol osutab, või objektide valimiseks, kui kaamera neid vaatab, või teatud liikumismehaanika stiilide jaoks.
6.5 Ajakorrektsioon
Objektide sel viisil manipuleerimisel tuleb arvestada ühe olulise teguriga kaadrisagedus. Ükskõik kui hoolikalt optimeerite, erinevad kaadrisagedused alati ja te ei soovi, et teie mängu kiirus vastavalt varieeruks. Kui keegi teine jookseb teie mängu kiiremas arvutis, kui te seda arendasite, ei soovi te, et mäng töötaks topeltkiirusel.
Selle parandamiseks saate korrutada kasutatavad väärtused viimase kaadri renderdamiseks kulunud ajaga. Seda saab teha kasutades Time.deltaTime. See muudab efektiivselt kõigi muutujate kiirust, millest iga kaadri võrra suurendate muutus kaadri kohta kuni muutus sekundis, ja peaksite selle muudatuse tegema mis tahes väärtuses, mida suurendate või vähendate igal kaadril.
6.6 Heliallikad ja kuulajad
Nüüd, kui oleme käsitlenud objektide loomist, renderdamist ja juhtimist, räägime muus mõttes, mida arvutimängud võivad teenida: nimelt heli. Ühtsus toetab kahte tüüpi helisid: 2D ja 3D helid. 3D-heli varieerub nende helitugevusest sõltuvalt kaugusest ja moonutab kaamera suhtes liikudes; 2D helid seda ei tee.
2D-helid sobivad hääle ülekandmiseks ja taustamuusikaks ning 3D-helid kehtivad maailmasündmuste tekitatud helidele. Selleks, et muuta, kas heli on 3D või mitte, valige see menüüst projekti kuvamiseks lülituge nupule inspektor Vaadake ja valige rippmenüüst sobiv valik, seejärel vajutage nuppu reimport nuppu.
Heli tegelikuks esitamiseks peate kinnitama audioallikas tugipostile (tugiteenus, millest soovite 3D-heli korral heli pärinevat). Siis peate avama heliklipp ja valige oma helifail.
Sa võid kasutada myAudioSource. Paus () ja myAudioSource. Esita () nende helifailide juhtimiseks. Saate reguleerida helide languskäitumist, helitugevust ja Doppleri nihutamist inspektor vahekaart heliallika jaoks.
6.7 Sisend
Mäng, mis ei anna kasutajalt mingit sisendit, ei ole palju mängu. Sisendeid, mida saate lugeda, on palju ja peaaegu kõigile neist pääseb sisse Sisend ja Võtmekood objektid. Allpool on toodud mõned sisendi avaldused (mille väärtusi hinnatakse igas kaadris).
Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Sisend. GetMouseButton (0); bool isPressingSpace = sisend. GetKey (võtmekood. Ruumi);
Nende ridade funktsioonid on enamasti iseenesestmõistetavad. Neid kolme tüüpi sisestusviidet kasutades saate rekonstrueerida moodsaimate 3D-arvutimängude juhtimisskeemid.
6.8 Skripti silumine
Oletame, et skript ei tööta. Nagu hea arst ütleb, võivad teiega juhtuda paugud ja hangad. Kui teie C # -ga on ilmseid süntaksi vigu, keeldub mäng esitamast lüües tavaliselt mängu käitamast ja kui edastate, kuvatakse mõned üsna kasulikud veateated ehitama skriptid redaktorist. Vt allpool:
Neid vigu pole tavaliselt kõige raskem parandada. Probleemsemaks võivad osutuda peensuslikud semantilised vead, mille puhul olete edukalt kirjutanud faili, mis sisaldab täis kehtivat C # - mitte ainult üks, mis teeb seda, mida arvasite. Kui teil on üks neist vigadest ja teil on probleeme selle jälgimisega, saate proovida olukorda parandada.
Esimene on mängu täitmise peatamine ja konsooli kontrollimine. Mängu saate peatada, klõpsates nuppu paus ikooni redaktori ülemises keskmises osas ja seejärel valides konsool alt üles aken menüü (või vajutades Ctrl > Vahetus > C). Isegi kui vigu pole, võivad hoiatused siiski anda vihjeid selle kohta, mis võib valesti minna.
Kui see ei tööta, võite proovida skripti oleku kohta aimu saada, printides sisemiste muutujate oleku, et kinnitada, et programm teeb seda, mida teie arvates teete. Sa võid kasutada Silumine. Logi (string) stringi sisu printimiseks konsooli, kui programmi täitmine sellele reale jõuab. Üldiselt, kui töötate tagasi sellest, mis peaks teie arvates toimuma nende asjade kaudu, mis peaksid olema tehes selle teoks, jõuate lõpuks punktini, kus silumisprindid ei tee seda, mida te nendelt ootate teha. Selles on teie viga.
7. Näide: skriptimispong
Pongi ehitamiseks jagame mängu põhielementideks: meil on vaja palli, mis mõlade vahelt edasi-tagasi rikošetides suurendab kiiruse jaoks on vaja tulemustabelit, mis teaks, millal pallid on aerudest möödunud, ja me vajame mehhanismi palli taaskäivitamiseks, kui see juhtub. Hea esimene samm oleks lisada kuulile mittekinemaatiline jäik kere, kaks kinemaatilist jäika keha kuulile. mõlad, keelake nende kõigi jaoks raskusjõud ja määrake tavapärastest varadest sobiv füüsiline materjal (põrgatama koos põrgatama kombain seatud korrutada).
Allpool saate vaadata palli skripti koos selgitavate kommentaaridega. Pall peab saavutama mõned põhieesmärgid: see peaks põrkama keeruka mustriga, hoides seda alati liikumist mõlemal teljel ja horisontaalis peaks see kiirenema väljakutsuvas, kuid mitte võimatus tempos suund.
BallHandler.cs
Järgmisena peame skriptima oma mõla, mida saate vaadata allpool. Mõla peab liikuma üles ja alla vastuseks klahvivajutustele (kuid mitte väljaspool teatud piire). Samuti peab see osakeste süsteemi käivitama, kui see millegagi kokku põrkub.
PaddleHandler.cs
Järgmisena vajame vaenlase AI-d: midagi, mis paneb vaenlase mõla fikseeritud kiirusega palli poole liikuma. Selleks kasutame maksimaalse lihtsuse saavutamiseks Vector3.Slerpi. Meile meeldiks ka sama osakeste käitumine, mida näeme oma mõla kohal.
EnemyAI.cs
Lõpuks vajame skripti tulemustabeli värskendamiseks ja palli lähtestamiseks, kui see ületab piire.
TulemustabelUpdater.cs
Kui need skriptid on lisatud ja viited täidetud, kogeme Pongimängu läbi mängimist!
Sa saad laadige alla minu Pongi demo, kui soovite näha kõike, mida ma olen tegevuses kirjeldanud. See töötab Windowsi, Maci ja Linuxi süsteemides.
8. Dokumentatsiooni uurimine / lisateave
Unity on keeruline mootor, millel on palju rohkem funktsioone, kui seda stiili käsitlev juhend hõlpsalt hõlmaks, ja see on enne, kui lisate laiaulatuslikke (tasuta ja ärilisi) Unity laiendusi, mis on saadaval saidil internet. See juhend annab teile tugeva lähtekoha mängu arendamiseks, kuid enesetäiendamine on oluline oskus kõigis ettevõtmistes ja kaheti nii ka siin.
Oluline ressurss on siin Unity ScriptReference. ScriptReference on otsitav andmebaas, mis on saadaval nii C # kui ka Javascripti jaoks ja millel on nimekiri iga Unity käsu ja funktsiooni kohta koos nende funktsioonide kirjelduste ja lühikeste näidetega süntaks.
Kui teil on probleeme Unity redigeerija ja liidesega või kui eelistate lihtsalt videoõpetusi, on pikk nimekiri kvaliteetseid Ühtsuse videoõpetused Parimad Unity 3D-õpetused algajateleKas soovite koos Unityga mänge arendada, kuid ei tea, kust alustada? Proovige täna ühte neist vingetest Unity 3D-õppematerjalidest. Loe rohkem saadaval. Ulatuslikum (kuid vähem lai) tekstiõpetused Ühtsusele on saadaval ka CatLikeCoding'is.
Lõpuks, kui teil on küsimusi, mis jäävad dokumentide või õpetuste ulatusest välja, võite esitada konkreetseid küsimusi aadressil vastused. Unity3d.com. Pidage meeles, et vastused pakuvad vabatahtlikud, seetõttu austage nende aega ja otsige kõigepealt andmebaasist, et veenduda, et teie küsimusele pole juba vastatud.
9. Mängu ülesehitamine / iseseisvaks rakenduseks kompileerimine
Kui olete ehitanud midagi, mille üle olete uhke (või olete lõpetanud harjutamiseks meie kergelt räpase Pongi näite), on aeg teisaldage oma mäng redaktorist ja muutke sellest midagi, mida saate Internetis postitada ning sundida oma sõpru ja perekonda mängima. Selleks peate looma iseseisva rakenduse. Hea uudis on see, et Ühtsuses on see väga-väga lihtne. Siiski on mõned potentsiaalsed luksumised, millega tasub olla ettevaatlik.
Alustuseks teadke, et saate luua ainult vigadeta projekti. Sel eesmärgil veenduge, et konsool oleks ehitamisel avatud: leidub tõrkeolukordi, mida mäng redaktoris eirab, kuid katkestab siiski katse. See viib konsooli ainult veateateid ja ekraanil pole nähtavaid tulemusi, mis võivad pettumust valmistada, kui unustate kontrollida. Kui olete mängu vigadeta kompileerinud, saate seda siiski valida Koosta seaded all Toimik või vajutage Ctrl > Vahetus
> B. See avab lihtsa dialoogi, mis võimaldab teil mängu luua mitmele platvormile.
Sealne protsess on iseenesest mõistetav: valige oma valikud ja klõpsake nuppu ehitama; mäng palub teil kataloog installida ja paigutab sinna nii käivitatava kui ka andmekataloogi. Neid kahte faili saab kokku pakkida ja levitada (veenduge, et te ei võta Unity demos ehitatud mängu eest tasu, kuna see rikub teenusetingimusi).
10. Lõppmärkused
Nagu kõigi mängude arendamise tööriistade puhul, on Unity edu võti korduv arendamine. Peate ehitama juhitavaid samme - olge kõigil eesmärkidel ambitsioonikad, kuid väikestes tükkides ambitsioonikad ja korraldage need tükid, nii et isegi kui jääte oma lõplikust ambitsioonist maha, siis lõpetate vähemalt sidususe toode.
Kõigepealt hankige kõige olulisemad elemendid: pidage silmas oma ideed minimaalne elujõuline toode, kõige lihtsam ja palja luuga asi, mida võiksite luua, ja tunnete endiselt, nagu oleksite saavutanud midagi väärt. Enne suurematele ambitsioonidele siirdumist jõudke selle minimaalse elujõulise projekti juurde.
See õpetus annab teile tugeva lähtekoha, kuid parim viis Unity õppimiseks on mängu ehitamine. Alustage mängu loomist, täitke oma teadmistes lüngad, kui need ilmnevad, ja järk-järguline teadmiste voog kaob asjad, mida te ei tea, üllatavalt kiiresti.
Kui olete seda kõike lugenud ja olete Unityga nõutavast kodeerimisest natuke hämmingus, siis kontrollige kindlasti, kuidas õppige mängude arendamist koos programmiga Unity Learn Ühtsuse õppimine on lihtsaim viis mängude arendamiseksKas soovite hakata oma mänge arendama? Ühtsuse õppimine on parim ja lihtsaim viis õppida ja omandada seda, mida peate teadma. Loe rohkem ja lugege ka meie juhendit kuidas teha videomänge ilma programmeerimiseta Kuidas teha videomänge ilma programmeerimisetaKas soovite teha videomängu, kuid ei saa koodi sisestada? Seejärel kasutage videomängude konstrueerimise komplekti, mis võimaldab teil luua mänge ilma vajaliku kodeerimiseta! Loe rohkem .
Ühtsus on võimas tööriist ja natuke uurides saate sellega ehitada muljetavaldavaid projekte kiiremini, kui arvata võiks. Andke meile allolevates kommentaarides teada, mille olete üles ehitanud - meile meeldiks näha!
Edelaosas asuv kirjanik ja ajakirjanik tagab Andrele funktsionaalsuse kuni 50 kraadi Celsiuse järgi ja on veekindel kuni kaheteistkümne jala sügavusele.