Kezdők bevezetés a Unity-be (6. rész)

Habár a repkedés önmagában is izgalmas lehet, még szórakoztatóbb, ha az űrhajónkkal lövöldözni is tudunk. A cél eléréséhez szükséges összes szkript megtalálható a példafájlokban, így túl sokat nem is kell majd hozzáadni.

Az ágyúk felszerelése

Válasszuk ki a Spaceship objektumot a Hierarchy nézetből, nyissuk meg az Assets/Scripts mappát, majd innen húzzuk az IonCannon szkript sort az Inspector-ba:

Ionágyú

Észrevehetjük, hogy egy Audio Source nevű komponens automatikusan hozzáadódott a GameObject-hez a szkripttel együtt. Néhány szkript nem fut önállóan, szüksége van más komponensekre is, melyeket a Unity automatikusan hozzáad, ha még nincsenek a GameObject-hez rendelve.

A lövési hang lejátszásához szükségünk lesz egy Audio Source-ra és egy Audio Clip-re. Az Audio Source bármilyen GameObject-hez csatlakoztatható, míg az Audio Clip csupán egy hangfájl.

Húzzuk a shoot hangot a Sounds mappából a Project ablakban lévő Fire Sound mezőbe:

Ágyú hangja

Az IonCannon szkript esetében láthatjuk, hogy az rendelkezik egy Bullet nevű mezővel. A következő feladatunk, hogy létrehozzuk a lövedék objektumot. Szerencsére nem kell ehhez művésznek lenni, ebben a példajátékban egy csilli-villi, animálódó plazmagömb helyett egy egyszerű gömb is megteszi.

Kattintsunk a Create gombra a Hierarchy nézetben. A 3D Oject/Sphere opciót válasszuk ki:

Lövedék hozzáadása

A Hierarchy nézetben a Sphere-t kiválasztva, majd Inspector-ra váltva, állítsuk a scale értéket 0.47-re. A gömböt ezután nevezzük el Bullet-nek.

Mivel a lövedék a scene-en belül fog mozogni, a fizikai motort is be kell izzítanunk. A Bullet-hez -a már ismert módon- adjunk hozzá a Physics/RigidBody komponenst az Add Component gombbal.

A lövedéknek lesz egy előre beállított sebessége, így az Is Kinematic opciót kapcsoljuk ki a Use Gravity-vel együtt.

A lövedék mozogni fog, miután elhagyta a képernyőt úgy, ahogyan az űrhajó tette ezt eredetileg. Ezt orvosolandó, húzzuk be a Bullet szkriptet a Project ablakból a Bullet GameObject-be. Ettől fogva a lövedék megsemmisül, ha kilép a képernyőről.

A Bullet objektumot már csak a Prefab mappába kell húzni. Így létrejön a Bullet Prefab, és szkript használatával lehetőségünk lesz sok-sok lövedéket létrehozni. Már lövedék Prefab-ként van jelen, így törölhetjük a Hierarchy-ban lévő példányt.

A Spaceship-et ismét válasszuk ki az Inspector-ban, és adjuk hozzá a Bullet Prefab-ot a Bullet mezőhöz. Az Inspector nézetnek hasonlóan kell kinéznie:

Ionágyú beállítása

Már csak az eget kell beállítani. Az űrhajónak egy üres, fekete térben kellene repkednie. Ehhez válasszuk ki a Main Camera-t a Hierarchy nézetből, majd az Inspector-ban a Clear Flags opciót állítsuk Solid Color-ra, a Background Color-t pedig feketére:

Kamera beállítása

Ezek után nem kell mást tenni, mint elmenteni a munkánkat, és kipróbálni az új ionágyút.

Ionágyú kipróbálása

Űrtörmelékek elhelyezése

Lövöldözni egy űrhajóval akkor igazán szórakoztató, ha van is mire lőni, ezért a következőkben aszteroidákat fogunk elhelyezni az űrben.

Keressük meg a rock_d_05.obj fájlt a példafájlok között, és húzzuk be a Models mappába a Project ablakban. Duplán kattintva nevezzük át a rock_d_05-ot Asteroid-ra:

Modellfájl átnevezése

Ez a fájl csak a modellről szolgáltat információt, nem tartalmaz semmilyen animációt.

Húzzuk az Asteroid-ot a Scene nézetbe, így létre is hozhatunk belőle egy példányt. Az így behúzott aszteroida egyszerű fehér színű:

Fehér aszteroida modell

Ugyan lehetne ez egy jégalapú üstökös maradványa is, de jobban fog kinézni, ha adunk hozzá valamilyen textúrát. Válasszuk ki az Asteroid GameObject leszármazott objektumát, a rockLP001-et. Az Inspector nézetben láthatjuk, hogy ez a GameObject-nek Mesh Renderer komponenssel is rendelkezik. A renderer rajzolja ki az objektumot, de ehhez némi segítségre van szüksége. Itt jön képbe a Materials opció.

A Materials határozza meg az objektum kinézetét. Például egy pamut anyagú egészen máshogy nézne ki, mint egy plasztik.

A Unity ezt shader-ek használatával éri el. De mi az a shader? A shader egy C-szerű nyelven íródott egyszerű program, amely a GPU-n fut. A shader elég egyszerű lehet ahhoz, hogy textúrát rendereljen egy kockán, de olyan komplex is, hogy vizet szimuláljon. A Unity nagyon sok beépített shader-t szolgáltat, például tud eget renderelni, de áttetszőnek is tud mutatni egy objektumot.

Nyissuk meg a Materials mappát a Project ablakban, és itt kattintsunk a Create gombra. A legördülő menüből válasszuk ki a Materials-t és nevezzük el Asteroid-nak. Az Inspector-ban így már látni fogjuk az egy anyaghoz tartozó tulajdonságokat.

Anyag beállítása

  • A Shader opció sok beépített lehetőség közül enged választani. Az alap Standard shader nagyon rugalmas beállítási lehetőséggel bír, így maradjunk annál.
  • Ha egy aszteroidát eltalálunk, akkor azt szeretnénk, hogy az eltűnjön. Ehhez a Rendering Mode-ot állítsuk Fade-re.
  • Az Albedo tulajdonság tartalmazza a textúrát. Húzzuk a flint_like_rock_4787 képet a Textures mappából a Albedo mezőbe:

Aszteroida anyagának beállítása

Az anyag azonban túl simának tűnik, mintha ki lenne fényesítve:

Polírozott aszteroida

A Metallic tulajdonság alatt két csúszkát találunk. Az első meghatározza az anyag fémes kinézetét, míg a második a textúra durvaságát hivatott mutatni.

Állítsuk be a Metallic csúszkát 0.219-re, a Smoothness-t pedig 0.149-re. Az anyagunk ezután ehhez hasonló képet kell fessen:

Fémes aszteroida

A anyagunk már be van állítva, ezután már csak hozzá kell adnunk az aszteroidánkhoz. Az Asteroid anyagot a Project ablakból húzzuk rá a Scene nézetben lévő Asteroid GameObject-re:

Anyagminta hozzáadása

A Debris szkript automatikusan hozzáad egy Sphere Collider-t, RigidBody-t és egy Audio Source-t az aszteroidához. Ha mindezzel megvagyunk, állítsuk be a paramétereket:

Asteroid GameObject beállításai

  1. A Sphere Collider közepét állítsuk 0.01, -0.09, 0.89 értékekre.
  2. A Radius-t állítsuk 1.49-re.
  3. Pipáljuk be az Is Trigger opciót.
  4. A RigidBody használatához pipáljuk ki a Use Gravity opciót.
  5. Pipáljuk be az Is Kinematic opciót.
  6. A Debris szkript esetében állítsuk a Min Speed-et 15-re és a Max Speed-et 30-ra.
  7. Húzzuk az explosion hangfájlt a Sounds mappából az Explosion Sound mezőhöz.
  8. A transform-nál az Asteroid GameObject minden Scale tulajdonságát állítsuk be 3.02-re.
  9. A Debris szkript hozzáadása egy Rendered Fade szkriptet is hozzáadott. Ha a lövedék eltalálja az aszteroidát, annak el kell halványulnia ahelyett, hogy egyszerűen eltűnne. A szkriptnek csak egy Fade Time tulajdonsága van, ezt tegyünk 0.5-ös értékre.

A lövedék mozgásterének beállítása

Ha az aszteroida kirepül a képernyőről, akkor az űrhajóhoz hasonlóan teleportálódnia kell. A Scripts mappából ehhez a ScreenWrap szkriptet rá kell húzzuk az Asteroid-ra. Az űrhajóhoz hasonlóan itt is be kell állítani a megfelelő renderert.

Az aszteroidának van egy gyereke, a rockLP001. Ezt húzzuk a Asteroid GameObject ScreenWrap Renderers tulajdonságára:

Aszteroida beállítása

Az Asteroid-ot már csak a Prefab mappába kell húznunk, ami a Project ablakban található. Ha ezzel készen vagyunk, akkor az aszteroida példányát töröljük a Hierarchy-ból.

Az aszteroidáknak már csak kiindulási helyre van szükségük. Kattintsunk a Create gombra a Hierarchy-ban, és válasszuk ki a Create Empty opciót. Nevezzük el a lerakási pontot Debris-nek.

Fontos, hogy a lerakási pont azonos szinten legyen az űrhajóval, különben a játékos az aszteroida felett vagy alatt fog röpködni. Használjuk referenciaként a missle_R_0 nevű GameObject-et, amely a modell közepén található.

Húzzuk a Debris GameObject-et úgy, hogy az a missle_R_0 gyereke legyen. A transform koordináták így innentől a szülő GameObject-hez fognak viszonyulni. Ahhoz, hogy megegyezzenek a koordináták, a Debris pozícióját állítsuk be (0, 0, 0) értékekre. Ezzel a kis trükkel az űrhajó és az aszteroida azonos síkban lesz.

Következő lépésként mozgassuk a Debris-t a Hierarchy nézet aljára, ahol eredetileg is volt:

Transform

Mozgassuk a Debris GameObject-et jobbra. Ha esetleg nem sikerül teljesen egyforma helyre húzni őket, akkor az új pozíciójukat (20.0, 1.72, 7.06) értékre kellene állítani:

Pozíció beállítása

Amikor összeáll a kép

Minden elem konfigurálva van, így már csak a kirakó összerakása van hátra.

Kattintsunk a Create-en a Hierarchy nézetben, és válasszuk ki a Create Empty opciót. Inspector nézetben kattintsunk az új GameObject-en és nevezzük el GameManager-nek.

Legyen a GameManager kiválasztva a Hierarchy nézetben, így kattintsunk az Add Component gombon, válasszuk ki a Scripts-et, majd a GameManager-t. Észre fogjuk venni, hogy ez a művelet egy Audio Source elemet is hozzáadott. A GameManager-nek van még számos más mezője, melyeket be kell állítanunk ahhoz, hogy az aszteroidák megfelelően jöjjenek létre a játékhoz.

Kezdjük a Debris mezővel. Ügyeljünk arra, hogy a GameManager kiválasztása aktív legyen, és húzzuk az Asteroid Prefab-ot a Debris mezőbe. Itt mit is csináltunk tulajdonképpen? A GameManager felelős az Asteroid objektum létrehozásáért. A Debris mezőt használja annak eldöntésére, hogy milyen objektumot hozzon létre a játéktérben. A fenti művelettel azt adtuk meg neki, hogy ez az objektum az Asteroid Prefab.

A GameManager-ben több időzítő érték is állítható. A Min Time-ot állítsuk 2-re, míg a Max Time-ot tegyük 5-re. A szkript ezekből a mezőkből tájékozódik arról, hogy milyen gyorsan jelenjenek meg az aszteroidák. A Total Items on Screen értéket 5-re állítva pedig azt mondhatjuk meg, hogy maximum 5 aszteroida lehet a képernyőn, ezzel megakadályozhatjuk, hogy a játékost elsöpörje az űrtörmelék. Ezután húzzuk a Debris GameObject-et a Hierarchy nézetből a Screen Debris mezőbe. Ezzel a művelettel mondjuk meg a GameManager-nek, hogy az aszteroidákat a Debris GameObject-en hozza létre.

A GameManager komponens ezután a következőképpen néz ki:

GameManager szkript

Végezetül, az Audio Source komponensben adjuk hozzá a background-music zenét az AudioClip mezőhöz. Ügyeljünk rá, hogy a Loop be legyen pipálva, így a háttérzene folyamatosan ismétlődve szól játék közben.

Háttérhang beállítása

Indítsuk el a játékot, és nézzük meg, hogyan is működik az alkotásunk:

Elkészült a játék!

Gratulálunk! Elkészült az első Unity-s játékod.

Ez a sorozat csak a felszínt kapargatta meg, mégis remélhetőleg jó rálátást biztosít arra, hogy egy (akár bonyolultabb) játék elkészítése során milyen lépéseket kell megtennünk, mikre kell odafigyelni. A tapasztalat növekedésével pedig minden játékot fejleszteni vágyó egészen biztosan késztetést fog érezni arra, hogy saját szkriptekkel, igazán egyedi működésű programot alkosson.

Forrás: https://www.raywenderlich.com/770-introduction-to-unity-getting-started-part-2-2

Skeldar

Kezdők bevezetés a Unity-be (4. rész)

Az előző részekben megismerkedhettünk a környezettel, ahol a játékprogramozás zajlik, most viszont eljött az idő, hogy valóban elkészítsünk egy játékot. A gyakorlás céljából elkészítendő játék egy nagyon egyszerű, űrhajós-lövöldözős játék lesz. A játékkészítés során a következő dolgokat fogjuk elsajátítani:

  • Project ablak használata, asset-ek importálása és rendezgetése
  • Különbség a GameObject-ek és a Prefab-ok között
  • Unity fizika
  • Kamerák működése, a nézetek típusai
  • A Unity-ben lévő anyagok alapjai

A játék előre elkészített asset-ekből fog felépülni, de a későbbiekben a saját asset-ek készítésével és szkriptek írásával is megismerkedünk. Ha majd mindennel elkészültünk, akkor valami ilyesmi eredményt kapunk:

Game nézet

Kezdjünk neki

Töltsük le innen a sample-files fájlokat. Három mappát tartalmaz a példa: asset-ek, modellek és induló projekt. Az előző részekben megismert módon megnyithatjuk a projektet.

Megjegyzés: A Unity-ben a projektek megnyitása kicsit másabb, mint a többi programban. Kattinthatunk a scene fájlon, vagy kiválaszthatjuk a projekt mappáját is a Unity böngészőjében.

Open project

Open project

A fájlrendszerben keressük meg a game assets mappát, és válasszuk ki a benne lévő összes fájlt, vagy húzzuk őket az Assets mappába a Project ablakon belül:

Importálás

Megjegyzés: Ha esetleg nem látszódik a Project ablak, akkor válasszuk ki a Window\Layouts\2 by 3 opciót.

Ha a Unity végzett az importálással, akkor valami hasonló ablakot kell látnunk:

Asset mappa

A Unity alapértelmezetten nagy előnézeti képeket használ, de ezen változtathatunk az alul lévő csúszka segítségével . Ez jól jön, ha sok asset-tel kell dolgoznunk:

Asset ikon méretezés

Észrevehetjük, hogy az összes asset egy helyre van ömlesztve. A nagyobb projektek esetén elengedhetetlen, hogy jól szét legyenek válogatva a különböző elemek, mellyel nagyon sok időt megspórolhatunk a fejlesztés során. A lényeg az, hogy a játék tényleges fejlesztésére minél több idő maradjon, és ne keresgéléssel töltsük azt.

A Project ablakon belül a Create-re kattintva, és a Folder opciót kiválasztva új mappát hozhatunk létre.

Mappa létrehozása

Nevezzük el az új mappát Materials-nak:

Mappa átnevezése

Készítsük el még a következő mappákat is, amelyek az asset-einket fogják tárolni:

  • Models
  • Prefabs
  • Scripts
  • Sounds
  • Textures

A Unity-ben lévő mappák úgy működnek, mint a fájlrendszer mappái. A fájlrendszer követi a Unity-ben lévő rendszert, így a Unity-n kívül is ugyanazon a helyen fogunk megtalálni mindent. E működés miatt érdemes a Unity-ben, nem pedig fájlrendszerben rendezgetni .

Ideje rendezgetni! Válasszuk ki a Bullet, Debris, GameManager, IonCannon, RendererFade, ScreenWrap és a ShipController szkripteket és húzzuk őket a Script mappába.

A background-music, explosion és shoot hangokat húzzuk a Sound mappába.

Végezetül a flint_like_rock_4787 textúrát mozgassuk a Textures mappába. Ha mindezzel megvagyunk, akkor a Project ablakunk hasonlóképpen néz ki:

Asset rendezés

Még mielőtt nekiesnénk a munkának, fontos megszokni, hogy rendszeresen mentsünk, mivel a Unity nem tartalmaz automata mentési funkciót.

A Unity a munkákat scene-ekbe menti. A scene lehet egy szintje a játéknak, de akár az egész játék is lehet egy scene. Ebben a lövöldözős játékban az utóbbi fog megvalósulni: minden egy scene lesz.

Mentsük el a játékunkat. Nevezzük el a scene-t Main-nek. A Save Scene ablak így néz ki:

Scene mentése

GameObject-ekkel és Prefab-okkal való munka Unity-ben

Mit ér a játékprogramozás játékos nélkül? Nézzünk bele a models/player mappába. Itt FBX fájlokat fogunk találni néhány képpel egyetemben.

Az FBX fájl tartalmaz minden adatot, ami a 3D-s modell elkészítéséhez kell. Ilyen például az animáció. A játékos fájlt, melyet a leírásban használunk, ComboMash készítette a Hextraction játékához.

Válasszunk ki minden fájlt a player mappából, és húzzuk őket az Assets mappa tetejére, a Project ablakba. Ezután valami ilyesmit kell lássunk:

NormalMap settings

Néhány képformátum extra információt hordoz, habár szokványos formátumúak. A p_pod_normal.jpg például tartalmazza a felület mélységét, amely felszíni világításhoz nyújt információt anélkül, hogy bármilyen más geometriát kelljen ehhez létrehozni. Ezt normal map-nak nevezzük.

A Unity azonban azt hiheti, hogy normál képpel dolgozik. A Fix Now gombra kattintva beállíthatjuk, hogy a Unity ezt normal map fájlként kezelje.

Miután importáltuk a játékos fájlokat, húzzuk a hextraction_pod asset-et a Scene nézetbe az alábbi módon:

Ship hozzáadása a Scene-hez

El is készült a modell első példánya. A Unity helyesen importálta a textúrát és helyezte rá a modellre.

A Hierarchy nézetben pedig megjelent egy új GameObject:

Ship Hiererchy

Ahogyan az előző részekben olvasható volt, a Hierarchy nézetben minden elem egy adott típusú GameObject. A GameObject maga tartalmaz egy transform adatot, amely a pozíciót, méretet, forgási adatot foglalja magába:

Transform

A GameObject-et úgy tudjuk testreszabni, hogy Components-et adunk hozzá. A komponensek képviselik a GameObject viselkedését és megjelenítését.

A világítási komponens hozzáadásával például -nem meglepően- fénybe boríthatjuk a GameObject-et. Az Audio Source komponens segítségével a GameObject hangot bocsájthat ki. Saját komponenseket is írhatunk és adhatunk a GameObject-ekhez, ha nagyon egyedi dolgot szeretnénk.

A GameObject-ek tárolóként is funkcionálnak. Az Alt nyomva tartásával, a kis háromszögre kattintva a hextraction_pod-on kinyitjuk az objektumot:

Hierarchy fa

Legtöbbjük üres GameObject, amely a modell struktúráját képviseli. A Unity készíti el ezeket a GameObject-eket, amikor egy modellt importálunk. A többi GameObject, mint például a pod_mesh gyerekei, tartalmaz egy Skinned Mesh Renderers komponenst, amely egy geometriát jelenít meg a képernyőn.

Azt is észrevehetjük, hogy némely GameObject a Hierarchy nézetben feketén, némely pedig kéken van jelölve:

Ship Hiererchy

A fekete jelölés a normál GameObject-et jelöli, míg a kék azt mutatja, hogy a GameObject egy Prefab-bal a többi objektumhoz kapcsolódik. Amennyiben a GameObject barna színűre vált, az azt jelenti, hogy elvesztette a Prefabbal való kapcsolatot.

A Prefab lehetővé teszi, hogy úgy mentsük le a GameObject-eket, hogy azok  kódból vagy a Scene nézetbe való behúzással könnyen duplikálhatóak legyenek. Hasonlóak a sablonokhoz, azzal a különbséggel, hogy a Prefab-ok kapcsolódnak egymáshoz. Ha módosítjuka Prefab-ot, akkor minden példány módosul.

Ha van egy Prefab példányunk a Scene nézetben, akkor bárhogyan testreszabhatjuk. Lesz olyan, amikor a módosításokat a már létező Prefab-okon akarjuk elvégezni, és lesz olyan is, amikor mindent vissza akarunk állítani az eredeti állapotára, mert nem jöttek be a változtatások.

Válasszuk ki a hextraction_pod-ot a Hierarchy nézetben. Az Inspector ablakban három gombot láthatunk: Select-et, Revert-et és Open-t:

Prefab vezérlők

A Select lokalizálja a Prefab-ot a Project ablakon belül. Ez különösen hasznos, ha az elemet egy komplex mappastruktúrában nem a megfelelő helyre tettük le.

Ha változtatunk egy Prefab-on, akkor az Apply gombbal azonnal módosíthatjuk az összes példányt. A Revert gomb visszavonja az egy példányon eszközölt változtatásokat, visszaállítja az eredeti állapotot. Az Open pedig megnyit egy modell fájlt, amit valamilyen szerkesztőben készítettek (például Maya vagy Blender).

Jelenleg a játékos hajója alatt egy rácsozat van, ami furán néz ki. Válasszuk ki tile_reference GameObject-et a Hierarchy nézetből. Ez a közvetlen leszármazottja a hextraction_pod GameObject-nek.

Megjegyzés: A gyorskeresőbe beírva a GameObject nevét, villámgyorsan megtalálhatjuk az objektumunkat.

Prefab keresés

A tile_reference-et kiválasztva töröljük a rácsozatot. A Unity egy figyelmeztetést fog feldobni:

Unity figyelmeztetés

A Unity minden olyan esetben jelezni fog, amikor egy változtatás megtöri a Prefab-ok kapcsolatát. Mivel pontosan ezt akarjuk tenni, ezért kattintsunk arra, hogy Continue. A hextraction_pod feketére fog váltani, jelezve, hogy az elemből egy hagyományos GameObject lett:

Prefab

A hextraction_pod-on történő jobb kattintás után válasszuk ki a Rename opciót, és nevezzük át a GameObject-et Spaceship-re.

Húzzuk a Spaceship-et a Prefab mappába a Project ablakon belül:

Prefab létrehozása

Behúzva a GameObject-et a Project ablakba, az automatikusan átkonvertálódik Prefab-bá. Annyi űrhajót tehetünk így a játékba, amennyit csak szeretnénk, úgy, hogy csak behúzzuk őket a Scene nézetbe. Jelenleg ez csak lemásolja a modellt, de a későbbiekben tartalmaz majd szkripteket, hangokat és még sok mást is. Amint azt láthajtjuk, a Prefab-ok nagyon hasznosak:

Prefab duplikálás

Már csak egy kis időt kell szánnunk arra, hogy a Project ablak átlátható maradjon. Az Assets mappán való kattintással megjeleníthetjük annak tartalmát. Tegyük a hextraction_pod-ot a Models mappába, a p_pod_ fájlokat pedig a Textures mappába. Végezetül ne felejtsünk el menteni!

A továbbiakról

A játékprogramozás bemutatását szolgáló sorozat következő részében egy másik izgalmas elemmel, a kamera beállításával fogunk megismerkedni. Hiszen mit ér egy játék, ha nem látunk belőle semmit?

Skeldar

Kezdők bevezetése a Unity-be (3. rész)

Az előző részben megismerkedhettünk a játékkészítés egyik legfontosabb elemével. Megtudtuk, hogyan helyezhetünk el és konfigurálhatunk objektumokat a játéktérben. A mostani részben pedig megtudhatjuk, hogyan próbálhatjuk ki az alkotásunkat, valamint bónuszként górcső alá vesszük a szerkesztő további extra funkcióit is.

7. Játékgombok

A játékgombok teszik lehetővé, hogy elindítsuk és leállítsuk a játékunkat. Az első gomb a Play:

Play gomb

Több dolog is történik, ha rákattintunk a Play-re. Először is elindul a játékunk, várakozásunknak megfelelően. A vezérlőgombok azonban kékre váltanak, ha a játékunk fut:

Játékvezérlők

Az egész játéktervezői tér is fakóbb lesz:

Unity szerkesztő

Fontos megjegyezni, hogy minden, a játék futása közben eszközölt változtatás elveszik a játék leálltával. Gyakori hiba, hogy a Unity-ben fejlesztők sok módosítást végeznek el futásidőben, majd egyszer csak azt veszik észre, hogy minden elveszett. A tervezői terület fakóbbá válása egy jó jelzés lehet, de sajnos nem túl nagy a színeltérés, így néha el lehet felejtkezni arról, hogy futásidőben vagyunk.

Szerencsére a Unity ad lehetőséget arra, hogy állítsunk az árnyalatokon:

Nyissuk meg a Unity Preferences ablakát.
Válasszuk ki a Colors fület a bal oldalon, és állítsuk be a kívánt színt:

Unity Colors

Playmode-ba való lépésnél így már elég feltűnő lesz a különbség:

Játékmód színek

A következő a Pause gomb:

Pause gomb

Ez a gomb szünetelteti a játék futását, és lehetőséget ad arra, hogy módosításokat végezzünk el. Ezek a módosítások azonban a játék leállításakor ugyancsak elvesznek. Az ilyen ideiglenes módosítások azért hasznosak, mert a játékkészítés sok kísérletezéssel jár, és itt nyugodtan próbálkozhatunk. Bármit módosítunk, a játékunk vissza fog állni alapállapotra.

A harmadik hasznos gomb a Step:

Step gomb

A Step gombbal képkockánként léptethetjük a játékot. Nagyon hasznos, amikor az animációkat a lehető legalaposabban meg akarjuk vizsgálni, vagy ha egy adott GameObject állapotát akarjuk ellenőrizni a játék folyamán:

Léptetés

8. Egyéb szerkesztői beállítások

A játékkészítés folyamata gyakran több fejlesztő munkájának összehangolását is szükségessé teszi. Az első a Collab menü, amely ezt hivatott segíteni:

Collab menü

A Unity új szolgáltatása lehetővé teszi, hogy nagy csapatok dolgozzanak egy projektben.

A következő gomb a Service, amellyel különféle szolgáltatásokat adhatunk a Unity játékunkhoz. Az opció használatához Unity Project ID szükséges:

Unity Services

A Project ID hozzáadása után különböző szolgáltatásokkal bővíthetjük a programunkat. Például felhő build-et adhatunk a projekthez, amely automatikusan build-eli a projektet, így nem kell minden egyes build-re várni. Hozzáadhatjuk még az Analytics, In-Game Ads, Multiplayer támogatást, illetve az In-App Purchasing, Performance Reporting és Collaborate opciókat is.

Csapattagokat is felvehetünk, emellett korhatárt és más fontos dolgokat állíthatunk be.

A következő az Account gomb, amellyel a Unity profilunkat kezelhetjük. Átnézhetjük a beállításainkat, ki-és beléphetünk vagy upgrade-elhetünk:

Account menü

A negyedik gomb a hasznos Layers:

Layers menü

A Layers segítségével a szerkesztői nézethez különböző kiosztásokat készíthetünk, menthetünk és tölthetünk be. A Unity nagyon jól testreszabható, minden dokkolható, átméretezhető, elrejthető:

Ezen funkció segítségével egy adott munkafolyamathoz legjobban illeszkedő nézetet készíthetjük el. Például az animációkkal való munkához nem kell feltétlenül megnyitva lennie a Game nézetnek, de az Animator és Animations nézeteket biztosan szeretnénk látni.

Újrarendezni a szerkesztőt időrabló, de a Layout-tal szerencsére gyorsan válthatunk.  Egy új ablak megnyitása és beállítása nagyon könnyű:

Layout menü

Észre fogjuk venni, hogy a fejlesztés során számos nézetre lesz szükségünk. Ez a sorozat igyekezett a legfontosabbakat bemutatni, viszont ezeken kívül sok másik létezik még. A részletes leíráshoz érdemes a Unity dokumentációhoz fordulni.

Hogyan tovább?

A játékkészítés legizgalmasabb része következik: a játékkészítés maga! A következő részben az elméletet átültetjük a gyakorlatba, és egy kicsi, űrhajós-lövöldözős játékot fogunk megalkotni. A megtanult technikáknak nagy hasznát fogjuk venni. Ha jól megismertük a fejlesztői környezetünket, akkor nagyon gördülékeny lesz a játékkészítés.

Skeldar

Kezdők bevezetése a Unity-be (2. rész)

A Unity-s játékfejlesztés folyamatát bemutató cikksorozat első részében a telepítésről, az asset-ekről, a GameObject-ekről és magáról a felületről általánosan olvashattunk. A játékfejlesztői munka jelentős része azonban az asset-ek importálása és a GameObject-ek behúzása után történik, ezért érdemes ezen ablakok kezelését a lehető legalaposabban elsajátítani.

5. Inspector ablak

Inspector ablak

Az Inspector ablakban konfigurálhatjuk a GameObject-eket. Ha kiválasztunk egyet a Hierarchy nézetben, az Inspector minden tulajdonságot kilistáz, ami az adott objektumra vonatkozik . Ez az objektum adatlapja. A játékfejlesztés során itt állítjuk be az indulási adatokat, de az adatlapon szereplő értékeket játék közben is módosíthatjuk, így például az is megvalósítható, hogy menet közben egy-egy objektum más színnel kezdjen el világítani.

6. Eszköztár

A játékfejlesztés elengedhetetlen kelléke az eszköztár, amely segítségével módosíthatjuk a GameObject-eket a scene-ben. Nagyon sokat fogjuk ezt használni, hiszen az üres scene-t fel kell tölteni, és az elemeket el kell rendezni. Gyakorláshoz helyezzünk el egy kockát:

GameObject menü

  • Nyissuk le a GameObject menüt
  • Válasszuk ki a 3D Object opciót
  • Válasszuk ki a Cube objektumot

Megjegyzés: Ha elveszítjük a kockát a manőverezés közben, akkor a Hierarchy nézetben a Cube objektumon duplán kattintva visszavihetjük a scene néztet a kockára.

A Hand nevű eszköz egy kéz, amellyel megfoghatjuk és mozgathatjuk az objektumokat:

Unity eszköztár

Unity eszköztár

Jobb egérgombbal a kéz ikon egy szemmé alakul, és ilyenkor magát a kamera nézőpontját változtathatjuk:

Unity eszköztár

 

A Ctrl (vagy Cmd) vagy Alt (vagy Option) és a jobb egérgomb lenyomásával, majd az egér mozgatásával a nagyítást állíthatjuk be. Az egér felfelé mozgatásával közelíthetünk a scene-ben, míg a lefelé való mozgással távolodhatunk. Egyszerűbb, ha az egér görgőjét használjuk.

Unity eszköztár

Tartsuk lenyomva a jobb egérgombot, így a WASD gombokkal is mozoghatunk a scene-ben, mintha csak egy FPS játékban lennénk. Fölfelé és lefelé is mozoghatunk az E és Q gombok segítségével. Számos FPS játékhoz hasonlóan, a Unity Scene nézetében is  gyorsabban mozoghatunk, ha a Shift-et nyomva tartjuk:

Unity eszköztár

A Hand alapértelmezett gyorsbillentyűje a Q. A kéz eszközhöz való gyors ugráshoz nyomjuk meg a középső egérgombot, melyet elengedve visszatérünk az ezt megelőzően használt eszközhöz.

A Translate eszközzel kiválaszthatjuk és pozícionálhatjuk a GameObject-et a scene-ben.

Unity eszköztár

Ha a Translate aktív, és kiválasztunk egy GameObject-et, akkor három nyíl jelenik meg az objektum közepéből kiindulva. A három nyíl a 3D-s tér három tengelyét jelenti. A piros az X, a zöld az Y és a kék a Z tengely.

Unity eszköztár

A Unity koordinátarendszere balkezes. A bal-és jobbkezes koordinátarendszer közötti különbség alapvetően a Z tengely iránya. A két rendszert az alábbi példa szemlélteti:

Koordináta-rendszerek

Megjegyzés: A három különböző színű nyilat a Unity nyelvezetében gizmónak nevezik. A gizmó egy 3D geometria vagy textúra, amely információt szolgáltat a GameObject-ről. Ebben az esetben a gizmó a három tengely irányát mutatja. Miután egyre jobban elmélyedünk a Unity-ben, akár saját gizmókat is készíthetünk, amelyek például mutathatják a starthelyet, a kamera helyét, a szélirányt stb. A gizmók egyik remek tulajdonsága még, hogy csak a Scene nézetben láthatóak, és kikapcsolhatóak, ha már nincs rájuk szükség.

Sok lehetőségünk van arra, hogy a Translate eszközzel mozgassuk a GameObject-eket. Kiválaszthatunk egy nyilat, és az egeret mozgatva csak az adott tengelyen toljuk el az objektumot. Például, ha a GameObject Y tengelyét választjuk ki, és a scene-t normál szögből nézzük, akkor az egérrel fel és le tudjuk mozgatni az elemet.

GameObject tengelyek

A három különböző színű lap a GameObject közepén arra hivatott, hogy az objektumot egy adott síkban tudjuk mozgatni. Ha például a zöld lapot fogjuk meg, akkor az X és Y tengelyek mentén tudjuk helyezgetni a GameObject-et:

Unity eszköztár

A Translate eszköz alapértelmezett gyorsbillentyűje a W.

A Rotate eszköz -nem meglepően- az objektumot forgatását teszi lehetővé:

Unity eszköztár

Ha kiválasztjuk ezt az eszközt, három körvonalat fedezhetünk fel, melyek mentén az adott elem forgatható:

GameObject forgatási tengely

Egyszerűen csak válasszunk ki egy vonalat, és kezdjük el mozgatni az egeret, hogy a GameObject is elforduljon. A tengelyhez való kötöttség nélküli forgatáshoz a vonalak közötti üres teret válasszuk ki:

Unity eszköztár

A Rotate eszköz alapértelmezett gyorsbillentyűje az E.

A Scale eszközzel a GameObject-et méretezhetjük át egy, vagy az összes tengely mentén.

Unity eszköztár

Egy tengelyen való átméretezéshez fogjuk meg a tengely végén lévő színes kockát. Az összes tengelyen való méretezéshez a GameObject közepén lévő kis kockát kell megragadjuk:

GameObject tengelyek

A Scale eszköz alapértelmezett gyorsbillentyűje az R.

Megjegyzés: Elsőre kaotikus lehet a gyorsbillentyűk kiosztása. Jobb lenne, ha a Scale S lenne R helyett. Valójában a látszólagos káoszban van rendszer: a billentyűzeten az eszköztár sorrendjében következnek egymás után a gombok, amit az alábbi ábra jól szemléltet:

Unity eszköztár

A Unity feltételezi, hogy az egeret a jobb kezünkkel fogjuk, míg a ballal a billentyűzetet kezeljük, az ujjainkat pedig általában a WASD környékén tartjuk a játékfejlesztés során:

Unity gyorsbillentyűk

Ebből a pozícióból a QWERT gombokat könnyedén elérjük. Sajnos néha előfordulhat, hogy W helyett a 2-est nyomjuk meg. Ilyenkor a szerkesztő 2D-s módba vált át:

Unity eszköztár

Ha ez megtörténik, csak nyomjuk meg újra a 2-est, és visszaáll az előző mód.

A Rect eszközre általában csak 2D-s GameObject-ek és User Interface-ek (UI) esetén van szükség, habár 3D-s objektumoknál is látni lehet.

Unity eszköztár

Ezzel az eszközzel lehetőségünk van átméretezni, igazítani, forgatni a 2D-s asset-eket, de a forgatási pontot is módosíthatjuk vele. A forgatási pontot egy nagy köz jelzi az asset körül:

Unity eszköztár

Az eszköz alapértelmezett gyorsbillentyűje a T.

A gizmó megjelenítés kis zavart okozhat. Ezek nem csupán gombok. Inkább kapcsolók, amelyek a gizmók pozícionálást hivatottak vezérelni.

Az első ilyen kapcsoló a Center és Pivot mód közötti váltást szolgálja. Center módban két GameObject-et választhatunk ki, így a gizmó a két objektum közé kerül. A GameObject-eket ebben a módban a közbenső pont körül forgathatjuk. Pivot módban minden GameObject a saját, belső forgatási pontja körül fordul el:

Unity gizmó

A második kapcsoló a Global és Local mód között vált. Global módban az objektumot az azt körülvevő világ szemszögéből módosítjuk. Az X tengely megy balra-jobbra, az Y megy fel és le, míg a Z tengely előre és hátra. A Local mód az objektum belső koordináta-rendszerét veszi alapnak, a tengelyek e szerint módosulnak.Global-Local

A játékfejlesztés eszközeinek fontossága

A játékfejlesztés ezen eszközeinek alapos begyakorlása kiemelten fontos. Nagyon sokat fogjuk használni őket, érdemes készségszinten elsajátítani a használatukat. A cikksorozat következő részében a másik igen fontos és gyakran használt elemmel, a Play gombbal és társaival ismerkedünk meg. Levezetésképpen pedig betekintünk az interfész testreszabásába és a Unity kollaborációs lehetőségeibe. Az előbbi igen fontos az egyéni munkánk elősegítése miatt, az utóbbit pedig jó ha alapszinten megismerjük, hiszen az igazán nagy játékok szinte mindig csapatmunkából születnek!

Skeldar

Kezdők bevezetése a Unity-be (1. rész)

A játékfejlesztők többségéről elmondható, hogy akkor kaptak kedvet saját játékok készítéséhez, amikor maguk is kapcsolatba kerültek különböző videojátékokkal. A hordozható telefonok  terjedésének köszönhetően egyre többen adták mobilra történő játékfejlesztésre a fejüket, melynek pozitív hozadékaként ma már számtalan szórakoztató mobilapplikáció közül válogathatunk. A Unity szintet lép, és még könnyebbé teszi a fejlesztők életét. Ez a bevezetés egy összefoglaló arról, miért, és hogyan érdemes belevágni a játékfejlesztésbe.

A mobil és számítógépes platformra való fejlesztés kezdetben nehézkes volt, ami sokakat már az első lépéseknél elriasztott. Szerencsére manapság már léteznek vizuális szerkesztőprogramok, az egyik ilyen élvonalbeli eszköz a Unity, mellyel számítógépre és mobilra is készíthetünk játékot. Egy játék sem lehet teljes grafikai elemek nélkül: a Unity-hez léteznek kész grafikák, animációk, effektek és más elemek, melyeket “assets”-nek nevezünk. Az Asset Store-ban rengeteg lehetőség közül válogathatunk, számos kiváló ingyenes és fizetős Asset Package-t találhatunk, amelyek egy adott téma köré épülnek (pl.: platformjátékhoz szükséges elemek), így egyből nekikezdhetünk a fejlesztésnek. Csaknem 30 platform támogatásának köszönhetően -ideértve a mobilokat, VR-t, asztali gépeket, konzolokat- az eszközök széles skáláját érhetjük el játékainkkal.

 

Unity-LEGO hasonlat

A Unity egy fantasztikus moduláris megközelítést használ, amikor a scene-ek, karakterek megalkotásáról van szó. Még kezdők is képesek remek űrhajót építeni az alap LEGO kockákkal, ez a Unity-ben sincs másképp. A kifinomultabb alkotáshoz lehetőségünk van teljesen testreszabni majdnem minden komponenst. Írhatunk saját shadert, vagy készíthetünk egészen új hálózati modult is a játékunkhoz.

A leírás  teljesen kezdők számára készült, hogy minél könnyebben átlássák a Unity környezetet és eszközöket. A későbbiekben részletesebben is szemügyre vesszük a különböző alrendszereket.

Az alábbiakkal fogunk megismerkedni:

  • Unity telepítése, és a verziók közötti különbségek tisztázása
  • Interfész különböző nézetei
  • Navigáció a Scene nézetben
  • GameObjects és Components hozzáadása és manipulálása

A későbbiekben pedig egy kicsi, űrbéli lövöldözős játékot fogunk készíteni, hogy a gyakorlatban is megismerjük a Unity adta eszközöket.

A kezdet

Első lépésként le kell töltenünk innen a Unity-t. De várjunk csak! Három különböző verzió is létezik. Melyikre van szükség?

A Unity motor minden verzióban ugyanazon funkciókkal van felszerelve. A Personal ingyenes, a Plus $25, míg a Pro $125 havonta. A legszembetűnőbb különbség a Unity indulókép, amelyet csak fizetős verziókkal távolíthatunk el vagy cserélhetünk sajátra. Számos kisebb-nagyobb eltérés van még, ezeket itt részletesen megtaláljuk.

Az oktatóanyagokhoz elegendő a Personal változat , de mielőtt elkezdenénk fejleszteni a következő, játékpiacot letaroló programunkat, olvassuk el a részletes tájékoztatót, mivel a Personal verzió rendelkezik pár megkötéssel.

Maga a telepítés nagyon egyszerű, ‘Next’-‘Next’-‘Finish’ után a következő kép fogad minket:

Unity regisztráció

A regisztráció után nem szükséges mindig bejelentkeznünk, offline mód használatra is van lehetőségünk.

A bejelentkezés után a következő kép fogad minket:

Unity új projkt

Kattintsunk a New Project gombon, amely egy párbeszédablakot hoz elő:

Unity projekt beállítások

  • Nevezzük el a projektet Space Debris-nek, és válasszunk egy helyet ahova el akarjuk menteni.
  • A 2D/3D opció meghatározza a kezdeti konfigurációt. Itt még az analitikát is bekapcsolhatjuk, amennyiben szeretnénk. Ezeket a beállításokat később is megváltoztathatjuk.
  • Az Assets packages gombbal egyedi csomagokat importálhatunk a projektbe. Például, ha FPS játékot szeretnénk készíteni, akkor érdemes a Unity first-person controller csomagját importálni. Ez egy kényelmes funckió a projekt elindításához, de a későbbiekben is bármikor importálhatunk csomagokat. A leíráshoz nincs szükség semmilyen alap asset-re.
  • Unity Analitics-et nem szükséges bekapcsolni.
  • Kattintsunk a Create project-re, és a Unity megnyitja az első projektünket.

Bevezetés az interfész felépítésébe

A Unity indulása után valami hasonló kép jelenik meg:

Unity interfész bevezetés

A felület előszőr nagyon összetettnek tűnhet (és verziótól függően kis mértékben eltérhet), de valójában teljes mértékben testreszabható annak érdekében, hogy csak azt lássuk, ami tényleg szükséges. Annyi információt jeleníthetünk meg, amennyit szeretnénk.

 

Nézetbeállítás

jobb felső sarokban öt gombot láthatunk. Válasszuk ki a ‘2 by 3’ opciót. A szerkesztő ennek hatására hasonló módon alakul át:

Unity interfész

 

1. Scene nézet

A bevezetés az interfész felépítésébe a Scene nézettel indul, amelyben a játék elemeit készítjük el, ide helyezzük el a modelleket, kamerákat és a többi elemet. Mindent vizuálisan kezelhetünk ebben a nézetben, ez maga a ‘színpad’.

Scene nézet

Tesztelés során a scene a játék állapotától függően módosul, menet közben akár újabb elemeket is hozzáadhatunk. Ha megállítjuk a játékot, a scene visszatér az alapállapotába: minden, játék során végzett módosítás elveszik.

2. Game nézet

A Game nézet a játékos szemszögét mutatja. Ez az a nézet, ahonnan játszani lehet a játékot, itt láthatjuk, mi hogyan működik:

Game nézet

Ez a nézet rendelkezik egy képarányt beállító menüvel. Különböző képernyőtípusokon is ellenőrizhetjük, mit is fog látni a játékos. Ez az opció azért is fontos, mert egy táblagépen vagy telefonon egész más látványt kapunk, mint számítógépen, ezért ehhez a nézethez is hozzá kell igazítani a játékot (feltéve, ha mobil változat is készül belőle).

 

Képarány

3. Hierarchy nézet

Hierarchy ablak tartalmazza a játékunk által használt összes GameObject-et. De mi az a GameObject? A GameObject egy objektum a játékban. Tulajdonképpen olyan üres konténerek összessége, melyekbe komponenseket tehetünk és testreszabhatunk.A komponensek lehetővé teszik, hogy a GameObject alakot vegyen fel, legyen az egy egyszerű kocka vagy egy komplex szörny modellje. A GameObject fényforrás és kamera is lehet, de a szkriptek segítségével bonyolult viselkedést is megadhatunk neki.

A GameObject-ek mappaként is funkcionálnak, további GameObject-eket tartalmazhatnak, így könnyebben rendszerezhetjük őket. A későbbiekben működés közben is láthatjuk majd őket.

scene egy adott szintjét jelenti a játéknak, habár elméletileg az egész játék elhelyezhető egy scene-ben. Minden, a scene-ben aktívan használt GameObject a Hierarchy nézetben jelenik meg:

Hierarchy ablak

Minden új scene egy Main Camera-val és egy Directional Light-tal kezdődik, amelyek ugyancsak GameObject-ek. Ha a Hierarchy-ból törlünk egyet, akkor azt tulajdonképpen a scene-ből töröljük. Ez a nézet az objektumok számának növekedésével egyre hasznosabbá válik majd.

4. Project ablak

A Project ablak tartalmazza a játékunk által használt összes asset-et. Itt kedvünk szerint csoportosíthatjuk őket. A drag and drop módszer a Hierarchy nézethez hasonlóan itt is műdödik, közvetlenül a scene-be is behúzhatunk elemeket. Ha a számítógépről behúzunk valamit a Project ablakba, a Unity automatikusan importálja azokat az asset-eket is. Ez igazán kényelmes tud lenni.

 

Project ablak

A Unity úgyanúgy rendezi el az asset-eket, ahogy azok a fájlrendszerben találhatóak. Az asset-eket soha ne módosítsuk közvetlenül a fájlrendszer szintjén, hiszen úgy a projekt számára is elérhetetlenné válhatnak, ami tönkreteheti a játékot. A Unity tárolja a metaadatokat az asset-ekről, így a könyvtárak közötti mozgatás ezeket az adatokat érvényteleníti. Ha az asset-eket akarjuk rendszerezni, legjobb ezt a Project ablakon belül megtenni.

A folytatásról

A cikksorozat további részeiben a Unity kiemelten fontos nézeteivel és ablakival fogunk foglalkozni. A nézetekről és használatukról egy alapos leírás lesz elérhető, hiszen hatékony kezelésük döntően meggyorsítja a fejlesztést.

Skeldar