Hirdetés

Az internetes gazdaság meglepő tulajdonsága az indie videojátékok megjelenése. Miután az ezer ember, a több millió dolláros tripla-A stúdiók kizárólagos domainjévé váltak, számos eszközkészletet fejlesztettek ki, amelyek hozza a modern játékfejlesztési erőforrásokat magánszemélyek vagy programozók és tervezők kicsi, ad-hoc gyűjteményei közé. Korábban már tárgyaltunk a legjobb indie játékok 10 indie-játék, olyan jó, akkor elfelejti, hogy egyáltalán indieElőfordulhat azonban, hogy valami mást szeretne, mint az indie-norma. Az indie-értékeket követő játék, ugyanakkor azzal a minõséggel készül, amelyre a legszélesebb AAA-játékok ismertek. Címek, mint ... Olvass tovább , ezért feltétlenül nézd meg, hogy vannak-e ötletek arra vonatkozóan, hogy mit lehet elérni olyan eszközökkel, mint a Unity.

Ez az útmutató ingyenes PDF formátumban tölthető le. Töltse le egy játék programozása egységgel: Kezdő útmutató most. Nyugodtan másolhatja és megoszthatja ezt barátaival és családjával.

Ezek az indie játékfejlesztő csapatok agilitást és kockázattoleranciát mutattak be, amely sok esetben lehetővé teszi számukra, hogy a játékfejlesztés gyorsabban mozdítsák elő a nagy költségvetésű társaiknál. Az utóbbi években számos megdöbbentően sikeres indie-film, többek között a

instagram viewer
Minecraft, Börtönés szuper hús fiú, és még ha nem is kell készségekre, hogy ilyen játékokat készítsen, akkor megteheti készíts egy játékot a Buildbox segítségével Hogyan készítsünk videojátékot egy héten a Buildbox segítségével?Van egy program, amely hihetetlenül egyszerűvé teszi a játékfejlesztést azok számára is, akiknek nincs tapasztalata a videojátékok tervezésében. Építkezésnek hívják. Ezért kell kipróbálnia. Olvass tovább .

Az indie játékfejlesztés gyorsan fejlődő tájában Egység úgy alakult ki, mint egy de facto szabvány: alacsony költsége, könnyű kezelhetősége és széles tulajdonságainak köszönhetően ideális a játék gyors fejlesztéséhez. Az egység olyan rugalmas, hogy akár meg is tudja készítsen saját egyedi játékvezérlőket Hogyan készítsünk egyedi játékvezérlőt Arduino és Unity segítségévelElőfordult már, hogy megtervezte a saját játékvezérlőjét? Ez könnyebb, mint gondolnád! Olvass tovább egy kis "barkács" segítségével tudja!

Még a nagy stúdiók, mint például a CCP Eve Online) használja a játékkoncepciók gyors prototípusához. Az Unity egy „játékmotor dobozban” - egy fizika és egy renderelő motor, horogokkal több szkriptnyelvhez, amely gyakorlatilag bármilyen videojáték-műfajhoz adaptálható.

Míg a Unity vizuális szerkesztőt kínál a játékkörnyezet manipulálásához, az Unity nem „nulla programozási” játékkészítő eszköz. Szükséges, hogy programozzon az eredmények elérése érdekében, ugyanakkor sokkal rugalmasabb és hatékonyabb eszközt nyújt Önnek, mint bármelyik „játék készítő” program.

Az egység nem fogja megtenni a munkát az Ön számára, de ez jelentősen csökkenti a belépés akadályát. A teljesen semmiből a C ++ és az OpenGL használatával napokba telik, hogy elérjék azt a pontot, ahol valójában valami megjelenik a képernyőn. Az Unity használatával körülbelül tíz másodpercig tart. Az Unity a játékteremtés alapvető elemeit gyors, intuitív módon kezdeti programozók kezébe adja.

Ma végigvezetök mindent, amit tudnod kell az Egységben való játék elkészítéséhez, amely tíz fő fejezetre oszlik:

1. bek. - Az egység verziói

2. bek. - Unity telepítése

3. bek. - A tárgyközpontú paradigma rövid bevezetése

4. bek. - Az egység alapjai

5. bek. - Példa: A játék alapvető elemei

6. bek. - Írás az egységben

7. bek. - Példa: Szkript-pong

8. bek. - A dokumentáció feltárása / Tudjon meg többet

9. bek. - A játék felépítése / önálló alkalmazásba történő fordítás

10. bek. - Záró megjegyzések

1. Unity verziói

Az Unity két alapvető ízben jön létre: a pro verzió és az ingyenes verzió. Vannak a a különbségek száma, de tágabb értelemben a pro verzió számos vizuális fejlesztést támogat (például a valós idejű puha árnyékok és a utófeldolgozás), és számos viszonylag kisebb funkció, amelyek rendkívül hasznosak a bonyolultabb szolgáltatásokhoz játékok.

Ennek ellenére a legtöbb viszonylag egyszerű játékhoz, amelyet érdemes felépíteni, az Unity ingyenes verziója tökéletesen megfelelő. Az alábbiakban bemutatjuk a legfontosabb különbségeket részletesebben az érdeklődők számára.

1.1 Árképzés

A Unity ingyenes verziója természetesen ingyenes. Van azonban néhány korlátozás: a Unity ingyenes verziója nem adható licenchez olyan társaság számára, amelynek éves jövedelme meghaladja a $100,000. Noha az ilyen szervezetek nem tartoznak ezen útmutató hatálya alá, ha gyanítja, hogy ilyen szervezetré válhat, valószínűleg bölcs dolog a Pro verzió bevezetése.

A Unity Pro verziója $75 egy hónap, vagy $1500 állandó licencre, és nincs korlátozása annak, amit tehet a vele létrehozott játékokkal. Rendelkezésre áll egy 30 napos ingyenes próbaverzió, amelyet a jelen útmutatóhoz fogunk használni annak érdekében, hogy a lehető legteljesebb áttekintést adjunk az elérhető szolgáltatásokról. Egyéves hallgatói engedély szintén elérhető Studica mert $129.

1.2 Jellemzők

A Unity ingyenes verziójában sok funkció hiányzik. A legfontosabb különbségek azonban a következők: a Unity ingyenes verziójában nincs számos megjelenítési lehetőség, amelyek ezt lehetővé teszik jobb megjelenésű, gyorsabban futó játékok (LOD támogatás, képernyőfelület utófeldolgozás, fejlett árnyékolók, valós idejű lágy árnyékok és halasztott rendering). Ez szintén hiányzik mechanim animációs rendszer, és néhány AI-eszköz.

Általánosságban, összetett, nagyszabású projekteknél vagy olyan projekteknél, ahol a grafikus teljesítmény fontos, a pro változat érdemes. A pro verziót használom, mert virtuális valóság játékot fejlesztek ki a Oculus Rift Oculus Rift áttekintésA virtuális valóság nem új, de végül megfizethető és felfogható. Négy év és két fejlesztési prototípus után megérkezett az Oculus Rift végső fogyasztói kiadása. Olvass tovább , és a képernyőterület utófeldolgozásának támogatása szükséges a headset megfelelő működéséhez.

2. Unity telepítése

A Unity telepítése egyszerű. A futtatható fájlt a következőről töltheti le unity3d.com/get-unity/download.

A letöltés után futtassa, majd kövesse a telepítő utasításait. A telepítés befejezése után megjelenik egy „aktiválja a Unity licencet” címû ablak. Jelölje be az „aktiválja a Unity Pro ingyenes 30 napos próbaverzióját”, majd az „OK” jelölőnégyzetet.

Gratulálunk! Most van egy 30 napos próbaverziója a Unity Pro-n. A próba lejárta után, ha nem akarja megvásárolni a profi verziót, válthat az ingyenes verzióra, és megőrizheti a meglévő tartalmát.

3. Rövid bevezetés az objektum-orientált paradigmába

Mielőtt elkezdenénk a Unity-t, fontos, hogy egy kicsit átlépjük az alapokat. Az egység mindkettőt támogatja C # és JavaScript mert játék programozás 7 Unity játékfejlesztési nyelv, amelyet el kell tanulni: melyik a legjobb?Meg akarja kezdeni a játékfejlesztést az Unity-ban? Szüksége lesz az Unity-kompatibilis nyelvek egyikének ismeretére. Olvass tovább ; együtt dolgozunk a C # -val ehhez az oktatóanyaghoz.

Először is, ha még soha nem programozott a programot, tegye félre ezt az oktatóprogramot, és töltsön el néhány napot a Microsofton keresztül C # Nyelvi alapozó amíg nem érzi jól magát a nyelv használatával az egyszerű feladatok elvégzésében.

Ha szeretne valamit, ami kissé eltér a C # -től (de nem feltétlenül olyan nyelvet, amelyet az Unity-ban használhat), akkor tekintse meg a hat legegyszerűbb programozási nyelv kezdőknek 6 legegyszerűbb programozási nyelv a kezdők számáraA programozás megtanulása a megfelelő nyelv megtalálásáról szól, ugyanúgy, mint a szerkesztési folyamatról. Itt található a hat legegyszerűbb programozási nyelv kezdőknek. Olvass tovább .

Ha korábban egy kötelező vagy objektumorientált nyelven programozott, például C vagy Java, fusson le az alapozóra, és ismerkedjen meg azzal, hogy a C # hogyan különbözik a múltban használt más nyelvektől. Akárhogy is, ne folytassa a bemutatóval, amíg nem érzi magát kényelmesen a C # -val kapcsolatos egyszerű problémák megoldásában (például, ha felkérném Ha el kell írni egy programot, amely kinyomtatja az első száz elsődleges számot, akkor képesnek kell lennie arra, hogy konzultáció nélkül írja azt a programot Google).

A legfontosabb fogalom, amelyet itt meg kell érteni, a objektum-orientált paradigma Hol szerezte a nevét az "objektumorientált" programozás?Az objektumorientált nem csupán véletlenszerű szószó, amelyet a programozási körökben hall. A név mögött ok van - de mi van? Csatlakozzon hozzám, mikor felfedezem a programozási koncepciók néhány alapját, és elmagyarázom ... Olvass tovább (rövidítve: OOP). Objektum-orientált nyelveken a programokat funkcionális egységekre osztják, amelyek nevezik tárgyak. Minden objektumnak megvannak a saját privát változói és funkciói. Objektum-specifikus függvényeket hívunk mód.

Az ötlet itt a modularitás: az, hogy minden objektumot elkülönítünk, és más objektumokat arra kényszerítünk, hogy interakcióba lépjenek vele módszereivel csökkentheti az esetleges nem szándékos interakciók számát - és kibővítve bogarak. Készíthet olyan objektumokat is, amelyeket később újra felhasználhat módosítás nélkül. Az Egységben ezeket az objektumokat építheti fel és rögzíti játék entitások (kinek a viselkedését fogják irányítani).

Az objektumokat az osztályok: az osztály csak egy fájl, amely meghatározza az objektum meghatározását. Tehát, ha szeretne egy Báb objektumot, amely az AI-t kezeli az ellenség ellen a játékban, akkor írjon egy „Mook” osztályt, majd csatolja ezt a fájlt minden ellenséges entitáshoz. A játék futtatásakor minden ellenséget fel kell szerelni a 'Mook' tárgy másolatával.

Új szkript csatolása egy objektumhoz így néz ki:

Egy játék programozása egységgel: A Beginner's Guide egység program játék 1

Első, válassza ki az objektumot és menj a Ellenőr. Kattintson a Add Component gomb.

A játék programozása az egységgel: A Beginner's Guide egységprogram játék 2

Menj új forgatókönyv, írja be a kívánt nevet, majd kattintson a gombra hozzon létre és adjon hozzá.

A játék programozása az egységgel: A Beginner's Guide egységprogram játék 3

Most van egy új szkript, amelyet dupla kattintással szerkeszthet!

Az osztályfájl így néz ki:

UnityEngine használata; nyilvános osztály Mook: MonoBehaviour {magán úszó egészség; érvénytelen Start () {egészség = 100; } érvénytelen frissítés () {ha (egészség> 0) {/ * Keressen játékosot, ha úton találkozik a játékosokkal, öld meg, ha lőnek, távolítson el véletlenszerű mennyiségű egészséget * /}} }

Lebontjuk ezt:

  • A UnityEngine használata: Ez a sor azt mondja a C #-nek, hogy használni akarjuk az Unity könyvtárait, amelyek lehetővé teszik a csatlakozást az Unity játékmotorhoz.
  • Nyilvános osztály Mook: MonoBehaviour:Ez a sor deklarálja az osztályt és nevét - Báb.
  • Saját úszó egészség: Ez egy privát osztály változót deklarál (amelyet csak az osztályon belül lehet megváltoztatni). A változónak értékét adják meg Rajt.
  • Érvénytelen indítás (): Ez egy úgynevezett módszert deklarál Rajt. A Start egy speciális módszer, amely csak egyszer fut, amikor a játék elindul.
  • Érvénytelen frissítés (): A frissítés egy másik speciális módszer, amely minden kereten fut. A játék logikájának nagy része itt megy.
  • // Ha úton találkozik a játékosokkal, öld meg: Ez a sor egy megjegyzés (a kettős perjelrel kezdődő sorokat a C # figyelmen kívül hagyja). A megjegyzések arra szolgálnak, hogy emlékeztessék magadra, hogy mi az egyes kódbitek. Ebben az esetben ezt a megjegyzést arra használják, hogy bonyolultabb kódblokkra álljon, amely valójában azt teszi, amit a megjegyzés leír.

Együtt Rajt és frissítés, szinte bármilyen nevet felhasználhat saját módszereire. Az Ön által létrehozott módszerek azonban csak akkor futnak, ha nem hívják meg őket. Deklaráljunk egy hipotetikus osztály nevű módszerét addTwoNumbers amely két számot összead:

public float addTwoNumbers (float a, float b) {return a + b; }

Ez egy nyilvános (más objektumok számára elérhető) módszert deklarál, amely úszót ad vissza, úgynevezett addTwoNumbers, amelynek két úszó bemenete (úgynevezett egy és b). Ezután outputként adja vissza a két érték összegét.

Hívja ezt a módszert ugyanabból az osztályból (mondjuk, belülről) frissítés) így néz ki:

úszó eredmény = addTwoNumbers (1, 2);

A módszer hívása egy másik osztályból hasonló:

addTwoNumbers példány; úszó eredmény = példány.addTwoNumbers (1, 2);

Ez ismét létrehozza az osztályunk egy példányát, hozzáfér a megfelelő módszerhez, és megadja a hozzáadandó számokat, majd az eredményt az eredmény. Egyszerű.

Ha a szkript olyan objektumhoz van csatolva, amelynek különleges tulajdonságai vannak (például részecskekibocsátó), amelyhez nem lehet hozzáférni a GameObject paraméterek normál halmazában kiválaszthatja, hogy a játék használatával másfajta játék entitásként kezelje-e az GetComponent eljárás.

Ennek szintaxisa így néz ki:

GetComponent().Játék();

Ha ez valamelyik ön számára nem ismert, menj vissza, és menj át a C # alapozón. Nagyon sok csalódást fog megtakarítani, ahogy folytatjuk.

4. Az egység alapjai

Ebben a szakaszban a Unity motor alapvető mechanikáján dolgozunk. A Unity munkafolyamata így működik:

  1. Hozzon létre egy entitást, amely a játékban szerepet tölt be (üres GameObjects felhasználható absztrakt logikai feladatokhoz).
  2. Írjon vagy keressen osztályfájlt, és szkriptként adja hozzá az entitáshoz (a Add Component gombot a ellenőr Kilátás.
  3. Fuss > teszt > hibakeresés > ismétlés amíg működik, és lépjen a játék következő elemére.

Az Unity számos alapvető nézetfüzettel rendelkezik, amelyeket a felhasználó ízlése szerint különféle módon lehet elrendezni. A nagy öt:

  1. Játszma, meccs: megjeleníti a játék futó példányát, amellyel kölcsönhatásba léphet és tesztelhet.
  2. Színhely: statikus, szerkeszthető verziót biztosít játékvilág.
  3. Ellenőr: lehetővé teszi, hogy módosítsa az egyes entitásokat a játék világában a szerkesztő fület.
  4. Project: lehetővé teszi a projekt fájljainak böngészését, és modellek, anyagok és egyéb források behúzását a szerkesztő fülön helyezheti el őket a játék világában.
  5. Hierarchia: Ez a lap a világ összes objektumát mutatja, lehetővé téve, hogy távoli objektumokat és a szülő entitásokat egymáshoz keresse meg és húzza.

Lásd az alábbi diagramot az összes ilyen helyzet helyére:

Egy játék programozása egységgel: Kezdő útmutató egység program játék 0

4.1 Egység entitások

4.1.1 Hálók

A hálószem az út 3D geometria képviselteti magát az egységben. Használhatja a Unity beépített verzióját is primitív tárgyakat (kockák, gömbök, hengerek stb.), vagy importálhatja saját 3D modelljeit egy modellező csomagból, például Turmixgép Az első lépések a Blenderrel: 7 fantasztikus oktatóanyag kezdő kezdőknekA 3D modellezés kiváló módszer a kreativitás gyakorlására, miközben kapcsolatot tart fenn a műszaki oldalával. Íme néhány fantasztikus ingyenes oktatóanyag. Olvass tovább vagy Maya Learning Maya 2016: Hol kezdjemA Maya a 3D animációhoz használt eszköz, de hihetetlenül meredek tanulási görbével rendelkezik. Milyen jó tananyag van? Olvass tovább . A Unity számos 3D formátumot támogat, beleértve .fbxés .3ds.

A háló szerkezetének alapvető eszközei a méretezési, elforgatási és fordítási gombok az interfész bal felső sarkában. Ezek a gombok vezérlőikonokat adnak a modellekhez a szerkesztő nézetben, amelyek felhasználhatók az űrben történő manipulációra. Egy objektum textúrájának vagy fizikai tulajdonságainak megváltoztatásához jelölje ki azokat és használja a ellenőr kilátás a anyag és merev test elemekkel.

4.1.2 GUI elemek

A hagyományos GUI fritek és a szöveg a GUI szöveg és a GUI textúra GameObjects a szerkesztőben. UI elemek kezelésének azonban robusztusabb és reálisabb módja az 3D szöveg és Quad A GameObjects (átlátszó textúrákkal és nem világító átlátszó árnyékolóval) HUD elemek beillesztésére a játék világába entitásként.

Ban,-ben hierarchia nézetben ezeket a játékelemeket át lehet húzni a fő kamerába, hogy gyermekeikké váljanak, biztosítva, hogy a kamera mellett mozogjanak és forogjanak.

A grafikus felhasználói felületek (szöveg és textúrák) méretét és méretét beállíthatja az ellenőr lap megfelelő mezőivel.

4.1.3 Anyagok

Az anyagok textúrák és shaderek Öt fontos PC-s játékfeltétel magyarázataHa játékot játszik konzolon, akkor a műszaki részleteket az Ön kezeli. Néhány játékos kedveli ezt, de a PC-játékosok gyakran élvezik a játék szemében nagyobb mértékű irányítást ... Olvass tovább , és közvetlenül a játék fülre húzhatók a projekt fülről. Nagyon sok árnyékoló érkezik a Unity Pro-hez, és a hozzájuk csatolt textúrát a Felügyelő fül segítségével beállíthatja egy objektumra, amelyre alkalmazzák.

A textúra importálásához konvertálja azt a .jpg, .pngvagy .bmp, és húzza be a vagyon mappája az Unity projekt könyvtárában (amely a Saját dokumentumok alapértelmezés szerint). Néhány másodperc múlva betöltő sáv jelenik meg a szerkesztőben. Amikor elkészül, a képet textúraként megtalálja a program fület.

4.1.5 Lámpák

A fények GameObjects amelyek sugárzást jelentenek a világon. Ha a jelenetben nincs fény, az összes sokszöget azonos fényerővel rajzolják, sima, kimosott megjelenést biztosítva a világnak.

A lámpák elhelyezhetők, elforgathatók, és számos belső jellemzőjük van, amelyeket testreszabhat. Az intenzitás csúszka szabályozza a fényerőt, és a hatótávolság ellenőrzi, hogy milyen gyorsan csökken.

A jelenet nézet megmutatja a megvilágítás maximális tartományát. Játsszon mindkét beállítással a kívánt hatás elérése érdekében. Beállíthatja a fény színét, a mintát (aprósütemény Ha a felületen megjelenik a fény, rávilágít, és hogy milyen fényforrás jelenik meg a képernyőn, amikor közvetlenül a fényre nézi. A süti felhasználható realisztikusabb fényminták hamisítására, drámai hamis árnyékok létrehozására és a vetítők szimulálására.

A fény három fő típusa folt, pontés irány-.

Spotlámpa elhelyezkedjen a 3D-s térben, és a fényt csak egy irányban változtatható szög kúpja irányítsa. Ezek jók a zseblámpákhoz, a fényszórókhoz, és általában pontosabban szabályozzák a világítást. A spotlámpák árnyékot vethetnek.

Pont fények elhelyezkedjen a 3D-s térben, és világossá tegye minden irányba. A pontvilágítás nem árnyékot vet.

Irányított fényekvégül a napfény szimulálására szolgálnak: a fényt olyan irányba vetítik, mintha végtelenül messze lenne. Az irányjelző lámpák a jelenet minden tárgyát érintik, és árnyékokat eredményezhetnek.

4.1.6 Részecskerendszerek

A Részecskerendszer egy GameObject amely száz vagy több ezer részecskét generál és irányít egyidejűleg. A részecskék kicsi, optimalizált 2D objektumok, 3D-s térben megjelenítve. A részecskerendszerek egyszerűsített megjelenítést és fizikát használnak, de valós időben képes entitások megjelenítésére dadogás nélkül, ideálissá téve füst, tűz, eső, szikra, mágikus hatások stb. Számára.

Nagyon sok paraméter módosítható, hogy elérje ezeket a hatásokat, és elérheti őket, ha egy részecske-rendszert az komponens szerkesztő > a részecskerendszer kiválasztása > az ellenőr fül megnyitása. Megváltoztathatja az egyes részecskék méretét, sebességét, irányát, forgását, színét és textúráját, és beállíthatja ezeknek a paramétereknek a nagyságát az idő múlásával is.

Alatt ütközés attribútum, ha engedélyezi, és a szimulációs térre állítja világ olyan részecskéket kap, amelyek ütköznek a világ tárgyaival, és amelyek felhasználhatók számos reális részecskehatáshoz, beleértve az esőt, a mozgó vizet és a szikrákat.

5. Példa: A játék alapvető elemei

Ehhez az oktatóanyaghoz egy egyszerű játékot fogunk készíteni Pong - olyasvalamit, amelyet már korábban a DIY-ban fedeztünk fel:

  • Arduino Classic Pong Hogyan lehet újra létrehozni a klasszikus pong játékot az Arduino használatávalA Pong volt az első videojáték, amely elérte a tömegpiacot. A történelem során először a „videojáték” fogalmát vezette be a családi házba, az Atari 2600-nak köszönhetően. Olvass tovább
  • Arduino OLED Pong Arduino Retro Gaming OLED kijelzővelGondolkozott már azon, hogy mennyi munkát igényel saját retro játékának írása? Mennyire könnyű Pong kódolni az Arduino-t? Olvass tovább

Ebben a szakaszban áttekintjük az alapvető elemeket - a szkriptek bemutatója később jön.

Először: bontjuk le a Pong játékát az alapvető alkotóelemeire. Először két evere és egy labdára van szükségünk. A labda képernyőn repül, ezért szeretnénk egy mechanizmust a visszaállításához. Azt is szeretnénk, ha a szöveg megjeleníti az aktuális pontszámot, és annak érdekében, hogy megmutassuk az egység minden alapvető elemét, szeretnénk egy fantasztikus részecskehatást, amikor megüt a labda. Az egész játékot drámai módon meg kell világítani.

Ez bomlik a labda tárgy (gömb), a spawner, két lapáttartóval részecskekibocsátók csatolt, a 3D-s szöveg entitásés a spotlámpa. Ehhez az oktatóanyaghoz az alapértelmezett fizikai anyagot fogjuk használni ugrál, val vel ugrál kombájn állítva szorzás. Így néz ki a beállítás tíz képernyőképeként:

Egy játék programozása egységgel: A Beginner's Guide egység program játék 4
A játék programozása az egységgel: A Beginner's Guide egységprogram játék 5

Először hozzon létre egy kocka prop a lapáttal.

Egy játék programozása egységgel: A Beginner's Guide egységprogram játék 6

Skálázza megfelelő módon, másolatot, és tegyen egy szféra a labda lapátok között.

Egy játék programozása egységgel: A Beginner's Guide egységprogram játék 7

Ezután hozzon létre egy 3DText objektum és skála és pozíció helyesen, megváltoztatva a betűméret attribútum, hogy kevésbé pixelezett képet kapjunk.

Egy játék programozása egységgel: A Beginner's Guide egység program játék 8

Ezután hozzon létre kettőt részecskerendszerek, válassza ki a kívánt tulajdonságokat, és rögzítse azokat a lapátokhoz.

A játék programozása az egységgel: A Beginner's Guide egységprogram játék 9
Egy játék programozása egységgel: A Beginner's Guide egységprogram játék 10

Ezután szeretnéd helyezze el és forgassa el a kamerát úgy, hogy helyesen keretezi a jelenetet. Amíg a kamera ki van választva, a jobb alsó sarokban láthatja a kamera nézetének kis áttekintését.

Egy játék programozása egységgel: A Beginner's Guide egység program játék 11

Mielőtt befejeznénk, két további kockát kell létrehoznunk ütközőkké, hogy megakadályozzuk a labdát a játékterületről. A jelölőnégyzet bejelölésével láthatatlanná tehetjük őket háló megjelenítő ban,-ben ellenőr lap.

Egy játék programozása egységgel: A Beginner's Guide egység program játék 13
A játék programozása az egységgel: A Beginner's Guide egységprogram játék 14

Ha eltalálja a játékot, akkor láthatja a játék alapvető elemeit. Még nem csinálnak semmit, de mi megkapjuk!

Egy játék programozása egységgel: A Beginner's Guide egység program játék 12

Most, hogy megvan ez a beállítás, akkor arról fogunk beszélni, hogy mi jár ezeknek az elemeknek a szkriptelésével játékkal.

6. Szkriptek az egységben

Miután csatolt egy szkriptet egy objektumhoz, módosíthatja azt, duplán rákattintva a ellenőr. Ez megnyílik MonoDevelop, az Unity alapértelmezett fejlesztési környezete. Lényegében a Monodevelop egy olyan szövegszerkesztő, amelynek funkciói kifejezetten a programozás felé vannak optimalizálva.

A kulcsszavak és észrevételek kiemelésre kerülnek kék és zöld, és numerikus értékek és karakterláncok jelennek meg piros. Ha már használta Fogyatkozás vagy más IDE-k, a MonoDevelop nagyon hasonló. tudsz épít a szkripteket a szerkesztőből, a szintaxishibák ellenőrzése érdekében, például:

A játék programozása az egységgel: A Beginner's Guide egységprogram játék 15

Általában annak érdekében, hogy a szkriptje kölcsönhatásba lépjen a Unity-val, hivatkoznia kell azokra az elemekre, amelyeket a szkriptet tartó objektum rendelkezik (ezen elemek listáját a ellenőr fül, ha a megfelelő objektumot választotta ki). Ezután felhívhatja a módszereket, vagy beállíthat változókat ezen elemek mindegyikére a kívánt változtatások végrehajtásához.

Ha azt szeretné, hogy egy objektum szkripte befolyásolja egy másik objektum tulajdonságait, akkor létrehozhat egy üreset GameObject változót a szkriptben, és használja a ellenőr hozzárendelni egy másik objektumhoz a jelenetben.

Az elemek listája az objektumnak a következő lehet (a fenti példa egyik evezőjének nézetéből vettük fel):

  1. átalakít
  2. Kocka (hálószűrő)
  3. Box Collider
  4. Mesh Renderer

Az objektum mindegyik aspektusa a parancsfájlból befolyásolható. Ezután pontosan megnézzük, hogyan.

6.1 Átalakítás

Az Unity GameObject transzformációs funkciói az objektum fizikai paramétereit vezérlik: az skála, annak pozíció, és annak orientáció. Hozzáférhet hozzájuk egy ilyen szkriptből:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

A fenti példákban az elnevezett változók a nevekben megadott típusúak. Itt van néhány kulcsfontosságú részlet: a pozíciót és a skálát, ahogy várták, a Vector3s. Hozzáférhet a x, Yés Z mindegyik alkotóeleme (például transform.position.y megadja egy tárgy távolságát a nulla sík felett).

Ennek elkerülése érdekében karosszéria zár, a forgásokat úgy kell kezelni, mint négyes (négykomponensű vektorok). Mivel a kézmanipuláló kvaternionok nem intuitívak, az eurólerikus szögek segítségével a forgásokat manipulálni lehet a Négy részből álló. Euler hasonló módszer:

transform.rotation = Négyzet. Euler (hangmagasság, elfordulás, hengerlés);

Ha objektumokat simán szeretne mozgatni egyik helyről a másikra, akkor megtalálja a Slerp a kvaternerációk és a vector3s módszer hasznos. A Slerp három érvet vesz fel - az aktuális állapotot, a végállapotot és a változás sebességét, és simán interpolál közöttük az adott sebességgel. A szintaxis így néz ki:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Renderer

Az Unity renderelő funkciói lehetővé teszik, hogy ellenőrizzék a kellékek felületének képernyőn történő megjelenítésének módját. Megváltoztathatja a textúrát, megváltoztathatja a színét, megváltoztathatja az objektum árnyékolóját és láthatóságát. A szintaxis így néz ki:

renderer.enabled = false; renderer.material.color = új szín (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Ezek többsége elég egyértelmű funkcióval rendelkezik. Az első példa láthatatlanná teszi a kérdéses tárgyat: hasznos trükkö számos helyzetben. A második példa újat jelöl ki RGB szín (nevezetesen zöld) a kérdéses tárgyhoz. A harmadik a fő diffúz textúrát egy új Texture változóhoz rendeli. Az utolsó példa az objektum anyagának shaderjét újonnan meghatározott shader változóra változtatja.

6.3 Fizika

Az egység integrált fizikai motorral érkezik - olyasmi, ami fizika homokozó játékok Smash, Drive & Build: 3 fantasztikus fizikai homokozó szimulátor Olvass tovább minden felhasználás. Ez lehetővé teszi az objektumok fizikai tulajdonságainak hozzárendelését és a szimuláció részleteinek kezelését az Ön számára. Általában ahelyett, hogy a saját fizikáját egy tankönyv és az átalakító rendszer segítségével próbálná megvalósítani, egyszerűbb és robusztusabb az Unity fizikai motorjának a lehető legnagyobb mértékű használata.

Minden fizikai kellék megköveteli gyorsítókban. Maga a tényleges szimuláció azonban a merev test, amely hozzáadható a ellenőr Kilátás. A merev test lehet kinematikai vagy nonkinematic.

A kinematikai fizikai kellékek ütköznek a körülvevő nem-kinematikai fizikai kellékekkel (és hatással vannak), de maguk az ütközések nem befolyásolják őket. A statikus kinematikus kellékek a közmondásos rögzíthetetlen tárgyak, a mozgó kinematikai tárgyak pedig a közmondásos megállíthatatlan erő (a feljegyzéshez, amikor ütköznek, egyszerűen átjutnak mindegyikön Egyéb).

Ezen felül beállíthatja a tárgy szöghúzódását (mekkora energiát igényel a centrifugáláshoz), megváltoztathatja annak tömegét, diktálhatja, hogy a gravitáció befolyásolja-e vagy sem, és erőkifejtéssel állíthatja rá.

Példák:

merevtest.szögDrag = 0,1f; merevtest = tömeg = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; merev test. AddForce (átalakítás előre * 100);

Ezek mind önmagában magyarázhatók. Az egyetlen dolog, amelyet itt érdemes megjegyezni, a transform.forward. A Vector3 mind három összetevőből áll (.előre, .felés .jobb), amelyek hozzáférhetők és velük forognak (előre a kék nyíl iránya a szerkesztőben). Az transform.forward A kulcsszó egyszerűen az 1. objektum előrejelző vektore az aktuális objektumhoz. Szorozzuk meg úszóval, hogy nagyobb erő keletkezzen az objektumon. Hivatkozhat is transform.up és transform.right, és tagadja meg őket, hogy megkapja az ellenkezőjét.

6.4 Ütközés

Gyakran egy játék építésekor azt szeretné, ha egy ütközés valamilyen állapotváltozást eredményezne a kódban, a fizikai szimuláción túl. Ehhez szüksége lesz egy ütközés-észlelési módszer.

Egy bizonyos mennyiségű előkészítő munka szükséges az Unity ütközésének felismeréséhez. Először is, az ütközés tárgyainak legalább egyikére a nem kinematikus merev test hozzá. Mindkét objektumnak helyes ütközőkkel kell rendelkeznie, amelyek nem triggerekre vannak állítva. Mindkét objektum teljes sebességének elég alacsonynak kell lennie ahhoz, hogy valójában ütközzenek, ahelyett, hogy egyszerűen átugornák egymást.

Ha mindent megtett, gondoskodhat az ütközésről, ha egy speciális ütközés-felismerési módszert helyez egy szkriptbe, amelyet csatol az objektumhoz, amellyel ellenőrizni szeretnéd az ütközést. A módszer így néz ki:

void OnCollisionEnter (ütközés egyéb) {// itt végezzen dolgokat. }

Ez a módszer automatikusan fut az első képkocka során, amikor egy másik objektum megérinti az objektumot. Az ütközési entitás Egyéb egy utalás az eltalált objektumra. Például hivatkozhat arra gameobject, merev testés átalakít jellemzőkkel, hogy különféle módon manipulálni lehessen. Míg OnCollisionEnter valószínűleg a leggyakoribb funkció, amelyet használ, használhat OnCollisionExit és OnCollisionStay (egyébként azonos szintaxissal és felhasználással), amelyek aktiválódnak az első képkocka során, amikor abbahagyja az ütközést egy objektummal, és minden olyan képkockán, amelyben ütközik egy objektummal.

Időnként hasznos lehet az is, ha úgynevezik raycasting. A sugárzás során végtelen vékony vonal (a sugár) valamilyen eredetből átveszik a világon, valamilyen vektor mentén, és amikor eltalál valamit, az első ütközés helyzete és más részletei visszatérnek. A sugárzás kódja így néz ki:

RaycastHit hit; if (fizika. Raycast (transform.pozíció, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

Ez egy sugarat vet fel az aktuális objektum pozíciójáról a -Vector3.up mentén (egyenesen lefelé), és összekapcsolja a változót találat az első objektumhoz, amelyen ütközik. Miután a sugara megüt valamit, hozzáférhet hit.distance annak meghatározása, hogy milyen messze van, vagy találat. GameObject hogy manipulálja az eltalált tárgyat.

Az ilyen sugárzások felhasználhatók lövészek számára annak meghatározására, hogy a pisztoly mira mutat, vagy objektumok kiválasztására, amikor a kamera rájuk néz, vagy bizonyos mozgástechnikai stílusokhoz.

6.5 Időkorrekció

Az objektumok ilyen módon történő manipulálásakor fontos szem előtt tartani az egyik fontos tényezőt filmkocka szám. Nem számít, mennyire gondosan optimalizálja, a framerate mindig változik, és nem akarja, hogy a játék sebessége ennek megfelelően változjon. Ha valaki más futtatja a játékot egy gyorsabb számítógépen, mint amelyen kifejlesztette, akkor nem akarja, hogy a játék kétszeres sebességgel futjon.

A helyesbítés módja az, hogy megszorozza a használt értékeket az utolsó képkocka megjelenítéséhez szükséges idővel. Ez a használatával történik Time.deltaTime. Ez hatékonyan megváltoztatja minden változó sebességét, amellyel minden keretet növeli változás képkockánként nak nek másodpercenként változás, és ezt a változást valószínűleg minden olyan értéknél végre kell hajtania, amelyet minden keretet növeli vagy csökkent.

6.6 Audio források és hallgatók

Most, hogy tárgyaltuk az objektumok létrehozásának, megjelenítésének és vezérlésének módját, beszéljünk arról a másik értelemről, amelyet a számítógépes játékok szolgálhatnak: hang. Az egység kétféle hangot támogat: 2D és 3D hangok. A 3D-s hangok a távolság függvényében változtatják a hangerőt, és torzulnak, amikor a fényképezőgéphez viszonyítva mozognak; A 2D hangok nem.

A 2D hangok megfelelőek a hangátvitelhez és a háttérzenehez, a 3D hangok pedig a világ eseményei által generált hangokra vonatkoznak. Annak érdekében, hogy megváltoztassa, hogy egy hang 3D-e vagy sem, válassza ki azt a program nézet, váltson a ellenőr nézetet, és válassza ki a megfelelő lehetőséget a legördülő menüből, majd nyomja meg a gombot újrabehozatal gomb.

Annak érdekében, hogy a hang valóban lejátszódjon, csatlakoztatnia kell egy hanglemezt audiosource egy támaszponthoz (a támaszpont, amelyből 3D hang esetén azt akarja, hogy a hang származjon). Akkor meg kell nyitnia a audioclip mezőben válassza ki a hangfájlt.

Te tudod használni myAudioSource. Szünet() és myAudioSource. Játék() a hangfájlok vezérlésére. Beállíthatja a hangkiesés viselkedését, a hangerőt és a hangok doppler-eltolódását a ellenőr fül a hangforráshoz.

6.7 Bemenet

Az a játék, amely nem vesz fel semmilyen felhasználót a felhasználótól, nem sokkal a játék. Számos különféle bemenet létezik, amelybe be lehet olvasni, és szinte mindegyik elérhető a Bemenet és Kulcskód tárgyak. Néhány minta bemeneti nyilatkozat (amelyek értékét minden kereten értékelik) az alábbiakban találhatók.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Bemenet. GetMouseButton (0); bool isPressingSpace = Bemenet. GetKey (kulcskód. Hely);

Ezen vonalak funkciói többnyire önmagukban értendők. E háromféle bemeneti referencia felhasználásával rekonstruálhatja a legmodernebb 3D-s számítógépes játékok vezérlési sémáit.

6.8 Szkript hibakeresése

Tegyük fel, hogy a szkript nem működik. Mint a jó orvos azt mondja, bangs és hangups történhet veled. Ha egyértelmű szintaxishiba van a C # -val, akkor a játék általában megtagadja a futtatást, ha a lejátszásra kattint, és néhány meglehetősen hasznos hibaüzenetet kap, ha épít a szkriptek a szerkesztőből. Lásd lentebb:

Egy játék programozása egységgel: A Beginner's Guide egység program játék 16

Ezeket a hibákat általában nem a legnehezebb kijavítani. Probléma lehet a finom szemantikai hibák, amelyek során sikeresen írt egy érvényes C # -val teli fájlt - nem csak egy, amely úgy gondolja, hogy gondolja. Ha valamelyik ilyen hiba létezik, és nehezen tudja nyomon követni, van néhány dolog, amit megpróbálhat a helyzet javítására.

Az első a játék végrehajtásának szüneteltetése és a konzol ellenőrzése. A játékot szüneteltetheti a szünet ikonra a szerkesztő felső középső részén, majd válassza a lehetőséget konzol alulról ablak menü (vagy megnyomásával Ctrl > Váltás > C). Még ha nincsenek hibák is, a figyelmeztetések segíthetnek abban, hogy nyomokat adjunk arra vonatkozóan, hogy mi megy rosszul.

Ha ez nem működik, akkor megpróbálhat képet szerezni a szkript állapotáról a belső változók állapotának kinyomtatásával, hogy igazolja, hogy a program azt látja, amit csinál. Te tudod használni Debug. Napló (karakterlánc) egy karakterlánc tartalmának kinyomtatására a konzolra, amikor a program végrehajtása eléri ezt a sort. Általában, ha visszamenõleg azon dolgozik, amelyről úgy gondolja, hogy megtörténik azokon a dolgokon keresztül, amiknek lennie kellene ha ez megtörténik, akkor végül eléri azt a pontot, ahol a hibakeresési nyomatok nem azt teszik, amit elvárnak tennie. Itt van a hibád.

7. Példa: Scripting Pong

A Pong felépítéséhez bontjuk le a játékot az alapelemeire: olyan golyóra van szükségünk, amely előre-hátra ricochett a lapátok között sebességre van szükség, olyan eredménytáblára, amely tudja, mikor mentnek a labdák az eveken, és szükségünk van egy mechanizmusra a labda újraindításához, amikor történik. Egy jó első lépés egy nem-kinematikus merev test hozzáadása a labdához, két kinematikus merev test hozzáadása a golyóhoz. eveket, tiltsa le a gravitációt mindegyikre, és rendeljen hozzá megfelelő fizikai anyagot a standard eszközökből (ugrál val vel ugrál kombájn állítva szorzás).

Az alábbiakban megnézheti a labda szkriptét magyarázó megjegyzésekkel. A labdának elérnie kell néhány alapvető célt: bonyolult mintázatban kell visszapattannia, mindig fenntartva mozgás mindkét tengelyen, és a vízszintes helyzetben kihívásokkal teli, de nem lehetetlen sebességgel fel kell gyorsulnia irány.

BallHandler.cs

Ezután meg kell szkriptelnünk a lapátunkat, amelyet alább tekinthet meg. A lapátoknak fel-le mozogniuk kell a gombnyomásokra válaszul (de nem szabad bizonyos határokon kívülre esni). Indítania kell a részecskerendszert is, amikor valami ütközik.

PaddleHandler.cs

Ezután szükség van az ellenséges AI-re: valami, amely az ellenség lapátát rögzített sebességgel követi nyomon a labda felé. Ehhez a Vector3.Slerp-et fogjuk használni a maximális egyszerűség érdekében. Azt is szeretnénk, ha ugyanaz a részecske viselkedés lenne, mint amit a saját evezőn látunk.

EnemyAI.cs

Végül szükségünk van egy szkriptre az eredménytábla frissítéséhez és a labda alaphelyzetbe állításához, amikor az elmozdul a határokon.

ScoreboardUpdater.cs

Ha ezeket a szkripteket csatolták és kitöltötték a hivatkozásokat, amikor a Pong játékot futtatjuk, játékélményt tapasztalunk meg!

Egy játék programozása egységgel: A Beginner's Guide egységprogram játék 18

tudsz töltse le a Pong bemutatóját, ha mindent szeretne látni, amit cselekedem. Windows, Mac és Linux rendszereken fut.

8. A dokumentáció feltárása / További információk

A Unity egy összetett motor, amely sokkal több funkcióval rendelkezik, mint amelyeket ennek a stílusnak a útmutatójában valószínűleg le lehetne fedni, és még mielőtt belefoglalná a (ingyenes és kereskedelmi) Unity kiterjesztések széles skáláját Internet. Ez az útmutató erős kiindulópontot nyújt a játék kifejlesztéséhez, ám az önképzés fontos készség minden erőfeszítésnél, és kétszer is.

Fontos erőforrás itt a Unity ScriptReference. A ScriptReference egy kereshető adatbázis, amely elérhető a C # és a Javascript számára is, amely tartalmaz egy listát minden Unity parancs és szolgáltatás funkcióinak leírása és rövid példái szintaxis.

Ha gondjai vannak a Unity szerkesztőjével és felületével, vagy csakúgy, mint preferenciaként a video oktatóvideók, van egy hosszú lista a kiváló minőségű Unity video oktatóanyagok A legjobb Unity 3D oktatóanyagok kezdőknekSzeretne játékot fejleszteni a Unity-val, de nem tudja hol kezdje? Próbálja ki az egyik fantasztikus Unity 3D oktatóprogramot ma. Olvass tovább elérhető. Szélesebb körű (de kevésbé széles) szöveges útmutatók az Unity számára a CatLikeCoding cégtől is beszerezhetők.

Végül, ha kérdése van a dokumentáció vagy az oktatóanyagok hatókörén kívül, akkor konkrét kérdéseket tehet fel a következő címen: válaszokat. Unity3d.com. Ne feledje, hogy a válaszokat önkéntesek nyújtják, ezért tartsa tiszteletben az idejüket és keressen először az adatbázisban, hogy megbizonyosodjon arról, hogy kérdésére még nem válaszoltak meg.

9. A játék felépítése / összeállítása önálló alkalmazásként

Amikor olyan dolgot építettél, amelyre büszke vagy (vagy a gyakorlatba befejezte az enyhén félénk Pong-példa klónozását), ideje vigye a játékot a szerkesztőből, és alakítsa át olyasvalakiré, amelyet az interneten feladhat, és arra kényszerítheti barátait és családtagjait játék. Ehhez önálló alkalmazást kell készítenie. A jó hír az, hogy az Unity-ban ez nagyon, nagyon egyszerű. Vannak azonban néhány potenciális csuklódások, amelyekben vigyázni kell.

Először is, tudd, hogy csak hibamentes projektet építhet fel. Ebből a célból ellenőrizze, hogy nyitva van-e a konzol építéskor: vannak olyan hibaállapotok, amelyeket a játék figyelmen kívül hagy a szerkesztőben, de megszakítja a készített kísérletet. Ez csak a hibaüzeneteket dobja a konzolra, a képernyőn nem látható eredményekkel jár, ami frusztráló lehet, ha elfelejti ellenőrizni. Ha már megkapta a játékot, amely hibátlanul fordul, választhat Építési beállítások alatt fájl menübe, vagy nyomja meg a gombot Ctrl > Váltás
> B. Ezzel megjelenik egy egyszerű párbeszédpanel, amely lehetővé teszi a játék felépítését több platformon.

Egy játék programozása egységgel: A Beginner's Guide egységprogram játék 17

Az ott zajló folyamat magától értetődő: válassza ki a lehetőségeket, és nyomja meg épít; a játék kéri egy könyvtár telepítését, és odahelyezi a végrehajtható és az adatkönyvtárat is. Ez a két fájl összecsomagolható és terjeszthető (csak győződjön meg arról, hogy nem számít fel díjat a Unity bemutatóban épített játékért, mert ez sérti a szolgáltatási feltételeket).

10. Záró megjegyzések

Mint minden játékfejlesztő eszköz esetében, a Unity sikerének kulcsa az iteratív fejlesztés. Szerkeszthető lépésekben kell beépítenie - mindenesetre ambiciózusnak kell lennie, de kis tölgyekben is ambiciózusnak kell lennie, és azokat a darabokat, amelyek még akkor is, ha elmaradnak a végső ambícióidtól, legalább egy koherens termék.

Először szerezze be a legfontosabb elemeket: ne felejtsen el egy ötletet minimális életképes termék, a legegyszerűbb, legcsontozottabb dolog, amelyet esetleg létrehozhat, és még mindig úgy érzi, mintha valami érdemeset elért volna. Menjen el a minimálisan életképes projekthez, mielőtt nagyobb ambíciókra lépne.

Ez az oktatóprogram erős kiindulási helyet nyújt, de az egység megtanulásának legjobb módja a játék felépítése. Keressen egy játékot, töltse ki a hiányosságokat tudásában, amint felmerülnek, és a fokozatos tudásáramlás meglepően gyorsan elpusztítja azokat a dolgokat, amelyeket nem ismersz.

Ha mindezt elolvasta, és kissé le van tiltva a Unity-hoz szükséges kódolásról, akkor ellenőrizze, hogyan kell tanulj játékfejlesztést a Unity Learn segítségével A Unity Learn a játék fejlesztésének legegyszerűbb módjaSzeretné elkezdeni saját játékok fejlesztését? A Unity Learn a legjobb és legegyszerűbb módja annak, hogy megtanulják és elsajátítsák azt, amit tudnod kell. Olvass tovább és olvassa el a következő útmutatót is hogyan lehet videojátékokat készíteni programozás nélkül Hogyan készítsünk videojátékokat programozás nélkülVideojátékot szeretne készíteni, de nem tudja kódolni? Ezután használjon videojáték-építőkészletet, amely lehetővé teszi játékok készítését kódolás nélkül! Olvass tovább .

Az Unity egy hatalmas eszköz, és egy kis felfedezéssel gyorsabban építhet lenyűgöző projekteket, mint amire számíthat. Az alábbi megjegyzésekben ossza meg velünk a véleményét - szívesen látnánk!

Andre délnyugati székhelyű írójának és újságírójának garantáltan 50 Celsius-fokig képes működni és tizenkét láb mélységig vízálló.