Felhasználói eszközök

Eszközök a webhelyen


tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:rpg_tutorial

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Következő változat
Előző változat
tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:rpg_tutorial [2022/10/09 13:44]
kissa [Harc]
tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:rpg_tutorial [2022/10/10 08:38] (aktuális)
kissa
Sor 312: Sor 312:
 {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​monster-spawned.png?​400|}} {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​monster-spawned.png?​400|}}
  
-==== Harc a szörnyekkel ====+===== Harc a szörnyekkel ​=====
 Minden szörny rendelkezik életerővel (''​health''​),​ sebzéssel (''​attack''​),​ és coin-okkal (''​coins''​). Ezeket az adatokat a játékos szörnyekkel történő harca során használjuk fel. Minden szörny rendelkezik életerővel (''​health''​),​ sebzéssel (''​attack''​),​ és coin-okkal (''​coins''​). Ezeket az adatokat a játékos szörnyekkel történő harca során használjuk fel.
  
-===== Fegyver létrehozása,​ animálása ====+==== Fegyver létrehozása,​ animálása ====
 Kezdésként a játékos kezében szeretnénk megjeleníteni egy kardot, amit mindig a játékossal együtt mozgatunk. Ehhez a játékos spawn-olásán módosítani fogunk. A ''​Player''​ sprite mellé egy ''​Weapon''​ sprite-ot is létrehozunk,​ majd ezt a kettőt egy konténerben kapcsoljuk össze ([[https://​photonstorm.github.io/​phaser3-docs/​Phaser.GameObjects.Container.html|Container osztály dokumentációja]]). Kezdésként a játékos kezében szeretnénk megjeleníteni egy kardot, amit mindig a játékossal együtt mozgatunk. Ehhez a játékos spawn-olásán módosítani fogunk. A ''​Player''​ sprite mellé egy ''​Weapon''​ sprite-ot is létrehozunk,​ majd ezt a kettőt egy konténerben kapcsoljuk össze ([[https://​photonstorm.github.io/​phaser3-docs/​Phaser.GameObjects.Container.html|Container osztály dokumentációja]]).
  
Sor 342: Sor 342:
 A kódban látható, hogy abszolút pozíciója csak a konténernek van, a játékos és a fegyver koordinátái a konténer pozíciójához képest vannak megadva. A kódban látható, hogy abszolút pozíciója csak a konténernek van, a játékos és a fegyver koordinátái a konténer pozíciójához képest vannak megadva.
  
-A kamerának a továbbiakban nem a player sprite-ot, hanem a playerContainer-t kell követnie, ezt módosítsuk:​+A kamerának a továbbiakban nem a ''​player'' ​sprite-ot, hanem a ''​playerContainer''​-t kell követnie, ezt módosítsuk:​
  
 <sxh js> <sxh js>
Sor 348: Sor 348:
 </​sxh>​ </​sxh>​
  
-Módosítanunk kell továbbá az ''​updatePlayer''​ metódust is, a megfelelő irányú erőket ezután a konténeren helyezzük el a játékos helyett. Amikor jobbra vagy balra mozdulunk, akkor a fegyvert is ennek megfelelően fordítjuk el, illetve helyezzük át.+Módosítanunk kell továbbá az ''​updatePlayer''​ metódust is, a megfelelő irányú erőket ezután ​magán ​a konténeren helyezzük ela játékos helyett. Amikor jobbra vagy balra mozdulunk, akkor a fegyvert is ennek megfelelően fordítjuk el, illetve helyezzük át.
  
 <sxh js> <sxh js>
Sor 379: Sor 379:
 this.physics.add.collider(this.playerContainer,​ this.blockedLayer);​ this.physics.add.collider(this.playerContainer,​ this.blockedLayer);​
 </​sxh>​ </​sxh>​
-===== Harc =====+==== Harc megvalósítása ​====
 A harc implementációjának első lépéseként adattagokat fogunk felvenni. Egyrészt tárolnunk kell azt, hogy a játékos éppen harcol-e, ezt adjuk hozzá az ''​init''​ metódushoz:​ A harc implementációjának első lépéseként adattagokat fogunk felvenni. Egyrészt tárolnunk kell azt, hogy a játékos éppen harcol-e, ezt adjuk hozzá az ''​init''​ metódushoz:​
  
Sor 394: Sor 394:
   };   };
 </​sxh>​ </​sxh>​
- 
  
 Következő lépésként egy tween animációt fogunk létrehozni,​ mely a SPACE billentyű lenyomása esetén a kardot 360°-ban megforgatja. Ehhez az ''​updatePlayer''​ metódust egészítsük ki a következő sorokkal: Következő lépésként egy tween animációt fogunk létrehozni,​ mely a SPACE billentyű lenyomása esetén a kardot 360°-ban megforgatja. Ehhez az ''​updatePlayer''​ metódust egészítsük ki a következő sorokkal:
Sor 425: Sor 424:
 </​sxh>​ </​sxh>​
  
-Ezután adjunk egy kezdeti implementációt az ''​enemyOverlap''​ metódusnak. Ez azt vizsgálja, hogy a játékos támadásban van-e, illetve még nem ütötte meg a szörnyet. Ha a feltétel teljesül, akkor rögzítjük,​ hogy a játékos megütötte a szörnyet, és a későbbiekben változtatni fogjuk a szörny életerejét (de egyelőre csak egy üzenetet íratunk ki a konzolra).+Ezután adjunk egy kezdeti implementációt az ''​enemyOverlap''​ metódusnak. Ez azt vizsgálja, hogy a játékos támadásban van-e, illetve még nem ütötte-e meg a szörnyet. Ha a feltétel teljesül, akkor rögzítjük,​ hogy az adott támadás során ​a játékos megütötte a szörnyet, és a későbbiekben változtatni fogjuk a szörny, valamint a játékos ​életerejét ​is (de egyelőre csak egy üzenetet íratunk ki a konzolra).
  
 <sxh js> <sxh js>
Sor 440: Sor 439:
 {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​monster-hit.png?​400|}} {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​monster-hit.png?​400|}}
  
-A metódusunkat tovább bővítjük,​ minden ütéskor 1-et levonunk a szörny életerejéből,​ majd megvizsgáljuk,​ hogy az 0-ra csökkent-e. Amennyiben igen, a szörnyhöz tartozó ​pontszámot ​jóváírjuk a játékosnál (és frissítjük a kijelzést),​ majd a szörny adatait eltávolítjuk a spawner-ből,​ és végül magát a sprite-ot is megszüntetjük.+A metódusunkat tovább bővítjük,​ minden ütéskor 1-et levonunk a szörny életerejéből,​ majd megvizsgáljuk,​ hogy az 0-ra csökkent-e. Amennyiben igen, a szörnyhöz tartozó ​coin-okat ​jóváírjuk a játékosnál (és frissítjük a kijelzést),​ majd a szörny adatait eltávolítjuk a spawner-ből,​ és végül magát a sprite-ot is megszüntetjük.
  
 <sxh js> <sxh js>
Sor 498: Sor 497:
 {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​attack-health.png?​400|}} {{:​tanszek:​oktatas:​jatek_prototipusok:​jatek_prototipusok:​attack-health.png?​400|}}
  
-A játékos életerejét a felhasználó számára is láthatóvá szeretnénk tenni, ennek érdekében a ''​UIScene''​-t is módosítjuk. A ''​create''​ metódust új szöveg létrehozásával egészítjük ki:+A játékos életerejét a felhasználó számára is láthatóvá szeretnénk tenni, ennek érdekében a ''​UiScene''​-t is módosítjuk. A ''​create''​ metódust új szöveg létrehozásával egészítjük ki:
  
 <sxh js> <sxh js>
Sor 518: Sor 517:
 </​sxh>​ </​sxh>​
  
-játékban alkalmazott ​minden ''​console.log''​ utasítást ​törölhetünkezeket ​csak a fejlesztés során ​használtuk a munkánk ellenőrzésére.+kódból ​minden ''​console.log''​ utasítást ​kitörölhetünkezek csak a fejlesztés során ​voltak segítségünkre.
  
 ===== Továbbfejlesztési lehetőségek ===== ===== Továbbfejlesztési lehetőségek =====
Sor 526: Sor 525:
   * object pooling alkalmazása a ládákra/​szörnyekre (lásd platformer példa),   * object pooling alkalmazása a ládákra/​szörnyekre (lásd platformer példa),
   * achievement rendszer létrehozása,​   * achievement rendszer létrehozása,​
-  * új itemek bevezetése (pl. pajzs, páncélzat, jobb kard, stb., ezek csökkenthetik a szörnyek sebzését, és növelhetik a játékosét),​+  * új itemek bevezetése (pl. pajzs, páncélzat,​ stb., ezek csökkenthetik a szörnyek sebzését, és növelhetik a játékosét),​
   * inventory rendszer létrehozása,​   * inventory rendszer létrehozása,​
   * kereskedés itemekkel,   * kereskedés itemekkel,
tanszek/oktatas/jatek_prototipusok/jatek_prototipusok/rpg_tutorial.1665323063.txt.gz · Utolsó módosítás: 2022/10/09 13:44 szerkesztette: kissa