Pálya létrehozása

A Godot Engine alapjai - I. Pong
2021-06-06 · 22:50
Most, hogy már elvégeztük az alapvető beállításokat és megbizonyosodtunk róla, hogy minden működik, kezdjünk neki a tényleges játék elkészítésének. Először is szükségünk lesz magára a pályára, ahol a játék játszódni fog.


Falak létrehozása


Hozzunk létre egy új scene-t: Scene -> New Scene, vagy a középső panelen felül kattintsunk a + gombra.
+ gomb az aktuális scene tab mellett


Válasszuk ismét a 2D Scene-t és nevezzük el "Palya"-nak. Kattintsunk jobb egérgombbal a Palya nevű node-on, és válasszuk az Add Child lehetőséget. A listából keressük ki a StaticBody2D-t majd kattintsunk a Create gombra. Az így létrejött új node-unkat nevezzük el "Fal"-nak, erről fog majd visszapattanni a labda a pálya szélén.

A StaticBody2D egy olyan fizikai tulajdonságokkal rendelkező node, amit általában akkor használunk, ha az adott node-ot nem akarjuk mozgatni, így kiválóan alkalmas falak és platformok létrehozására. Ez a node azonban önmagában nem jó semmire (ahogy a többi PhysicsBody2D sem), ezért létre kell hoznunk számára child node-ként egy formát, ami a "teste" lesz.

Ezt kétféleképpen tehetjük meg:

Az előbbiben egyszerűbb formákat adhatunk meg (kör, téglalap, stb), utóbbiban pedig mi rajzolhatjuk meg az alakzatot. Ebben a példában az utóbbit fogjuk használni.

Először is kapcsoljuk be a pixelhez igazítást. Kattintsunk fent az ikonsorban a 3 pötty ikonra, majd a lenyíló menüben pipáljuk ki a Use Pixel Snap lehetőséget.
3 pötty


Kattintsunk jobb egérgombbal a Fal node-on és megint válasszuk az Add Child Node lehetőséget. Ezúttal egy CollisionPolygon2D-t fogunk létrehozni. Ha ez ki van jelölve, akkor elkezdhetjük körberajzolni a pályát. A polygon-t bezárni az [Enter] lenyomásával tudjuk, vagy pedig úgy, hogy újra a legelső pontra kattintunk. Ha csak egy sima téglalapot rajzolnák, akkor az belül tömör lenne, ezért kell ez a "kígyó" forma:
fal a pálya körül


Ha valamit elrontottunk, akkor a fenti ikonsor végén lévő 3 ikonnal korrigálhatunk:
  • a zöld ikonnal új pontokat adhatunk a polygon-hoz
  • a kékkel mozgatni tudjuk a meglévő pontokat
  • a pirossal pedig törölni tudjuk ezeket a pontokat


Gól terület létrehozása


A Pong-ban úgy szerezhetünk pontot, ha a labdát sikerül az ellenfél mögé juttatnunk. Azt, hogy ez megtörtént-e, többféleképpen is ellenőrizhetjük. Ebben a példában 2 darab Area2D node-ot fogunk használni erre a célra.

Az Area2D hasonló, mint a StaticBody2D, ennek is szüksége van egy formára a működéshez, de utóbbival ellentétben ez nem az ütközést vizsgálja, hanem hogy belépett-e valami a területére, vagy kilépett-e onnan.

Jelöljük ki a Palya nevű node-ot, majd a fent megismert módszerrel adjunk hozzá egy Area2D-t és nevezzük azt át "BalKapu"-ra. Ezután jelöljük ki a BalKapu-t és adjunk hozzá egy CollisionShape2D-t.
Itt nem kell kézzel rajzolgatnunk elég csak a jobb oldali Shape lenyíló menüben kiválasztani a New RectangleShape2D lehetőséget. Kattintsunk ismét a RectangleShape feliratra, hogy előhozzuk az Extents mezőt.

Méretezzük át a téglalapot úgy, hogy a pálya tetejétől az aljáig kitöltse azt és 100 pixel széles legyen. Mivel az extents kiterjedést jelent, nem pedig aktuális méretet, ezért a megfelelő méretet úgy kapjuk meg, ha kettővel osztunk (mivel jobbra/balra és fel/le is ennyivel növekszik), tehát a méreteink a 100 pixel széles és 720 pixel magas téglalaphoz a következők lesznek: (x: 50; y: 360).

Kattintsunk ismét a BalKapu nevű node-ra, majd a jobb oldali panelen keressük meg a Transform mezőt, nyissuk le és a Position értéknek adjuk meg a következőt: (x: 50, y: 360).
Mivel annyit toltuk el, mint amennyi a CollisionShape2D extent értéke, így pontosan a pálya bal széléhez lesz igazítva a node-unk.

A BalKapu-n jobb egérgombbal kattintva válasszuk a Duplicate lehetőséget, hogy másolatot készíthessünk róla. A létrejövő BalKapu2 node-ot nevezzük át "JobbKapu"-ra.
Ezt a node-ot most át kéne tennünk a pálya jobb szélére. Ahelyett, hogy elkezdenénk számolgatni a pixeleket, egyszerűen csak írjuk be a Position "x:" mezőjébe hogy 1280-50, majd nyomjunk [Enter]-t, az engine elvégzi a számolást helyettünk.