A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
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:40] kissa |
tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:rpg_tutorial [2022/10/10 08:38] (aktuális) kissa |
||
---|---|---|---|
Sor 192: | Sor 192: | ||
Akkor dolgoztunk jól, ha 3 másodperc elteltével a konzolon látjuk, hogy különböző id-kkal új ládák kerültek létrehozásra, és a pályán ezek meg is jelentek. | Akkor dolgoztunk jól, ha 3 másodperc elteltével a konzolon látjuk, hogy különböző id-kkal új ládák kerültek létrehozásra, és a pályán ezek meg is jelentek. | ||
- | {{:jatekproto:chest-spawn.png?400|}} | + | {{:tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:chest-spawn.png?400|}} |
==== Ládák begyűjtése ==== | ==== Ládák begyűjtése ==== | ||
Sor 310: | Sor 310: | ||
Ha ezután a pályán mozogva a ládák mellett szörnyekkel is találkozunk, jól dolgoztunk: | Ha ezután a pályán mozogva a ládák mellett szörnyekkel is találkozunk, jól dolgoztunk: | ||
- | {{:jatekproto: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 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. |
<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 438: | Sor 437: | ||
Akkor dolgoztunk jól, ha a szörny támadásakor SPACE billentyű egyszeri lenyomásakor egyszer jelenik meg a konzolon a ''MONSTER HIT!'' üzenet (ennek vizsgálatakor a spawnerek logja zavaró lehet, így azt törölhetjük a kódunkból). | Akkor dolgoztunk jól, ha a szörny támadásakor SPACE billentyű egyszeri lenyomásakor egyszer jelenik meg a konzolon a ''MONSTER HIT!'' üzenet (ennek vizsgálatakor a spawnerek logja zavaró lehet, így azt törölhetjük a kódunkból). | ||
- | {{:jatekproto: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 463: | Sor 462: | ||
Ha jól dolgoztunk, azt kell látnunk a konzolon, hogy minden ütéssel 1-et csökken az ellenség életereje, majd ha elérte a 0-t, a szörny eltűnik és a játékosnál a pontok jóváíródnak. | Ha jól dolgoztunk, azt kell látnunk a konzolon, hogy minden ütéssel 1-et csökken az ellenség életereje, majd ha elérte a 0-t, a szörny eltűnik és a játékosnál a pontok jóváíródnak. | ||
- | {{:jatekproto:monster-health.png?400|}} | + | {{:tanszek:oktatas:jatek_prototipusok:jatek_prototipusok:monster-health.png?400|}} |
Most tovább bővítjük az implementációt, amennyiben a szörny nem halt meg, a játékos életerejét is csökkentjük a szörny ''attack'' tulajdonságának értékével. Emellett azt is megvizsgáljuk, hogy a játékos életereje 0-ra csökkent-e. Amennyiben igen, a játékot újraindítjuk. | Most tovább bővítjük az implementációt, amennyiben a szörny nem halt meg, a játékos életerejét is csökkentjük a szörny ''attack'' tulajdonságának értékével. Emellett azt is megvizsgáljuk, hogy a játékos életereje 0-ra csökkent-e. Amennyiben igen, a játékot újraindítjuk. | ||
Sor 496: | Sor 495: | ||
A konzolon ekkor a szörny és a játékos életerejének csökkenését is látnunk kell. | A konzolon ekkor a szörny és a játékos életerejének csökkenését is látnunk kell. | ||
- | {{:jatekproto: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 517: | Sor 516: | ||
uiScene.updateHealth(this.player.config.health); | uiScene.updateHealth(this.player.config.health); | ||
</sxh> | </sxh> | ||
+ | |||
+ | A kódból minden ''console.log'' utasítást kitörölhetünk, ezek csak a fejlesztés során voltak segítségünkre. | ||
===== Továbbfejlesztési lehetőségek ===== | ===== Továbbfejlesztési lehetőségek ===== |