Abychom na┼íi hru uzav┼Öeli, p┼Öid├íme n─øjak├® zloduchy. To p┼Öid├í do hry prvek v├¢zvy, n─øco, co dosud chyb─ølo.
My┼ílenka je tato: kdy┼¥ poprv├® seberete v┼íechny hv─øzdi─ìky, spadne odr├í┼¥ej├¡c├¡ se bomba. Tato bomba se bude n├íhodn─ø odr├í┼¥et po ├║rovni a kdy┼¥ se s n├¡ sraz├¡te, tak zem┼Öete. V┼íechny hv─øzdi─ìky budou generovan├® znova, tak┼¥e je m┼»┼¥ete op─øt sb├¡rat a pokud je sesb├¡r├íte, vypust├¡ se dal┼í├¡ bomba. To d├í hr├í─ìi v├¢zvu: z├¡skej co nejv─øt┼í├¡ sk├│re, dokud nezem┼Öe┼í.
Prvn├¡ v─øc, kterou pot┼Öebujeme je skupina (Group) pro bomby a p├ír Collider┼»:
bombs = this.physics.add.group();
this.physics.add.collider(bombs, platforms);
this.physics.add.collider(player, bombs, hitBomb, null, this);
Bomby se budou samoz┼Öejm─ø odr├í┼¥et od plo┼íinek a pokud do nich hr├í─ì naraz├¡, zavol├íme funkci 'hitBomb'. V┼íe, co ud─øl├íme je, ┼¥e hru zastav├¡me a zbarv├¡me hr├í─ìe do ─ìervena:
function hitBomb (player, bomb)
{
this.physics.pause();
player.setTint(0xff0000);
player.anims.play('turn');
gameOver = true;
}
Zat├¡m dobr├®, ale pot┼Öebujeme bombu vypustit. Uprav├¡me funkci collectStar:
function collectStar (player, star)
{
star.disableBody(true, true);
score += 10;
scoreText.setText('Score: ' + score);
if (stars.countActive(true) === 0)
{
stars.children.iterate(function (child) {
child.enableBody(true, child.x, 0, true, true);
});
var x = (player.x < 400) ? Phaser.Math.Between(400, 800) : Phaser.Math.Between(0, 400);
var bomb = bombs.create(x, 16, 'bomb');
bomb.setBounce(1);
bomb.setCollideWorldBounds(true);
bomb.setVelocity(Phaser.Math.Between(-200, 200), 20);
}
}
Pou┼¥ijeme metodu countActive objektu Group, abychom zjistili, kolik hv─øzdi─ìek ve skupin─ø je st├íle aktivn├¡ch. Pokud ┼¥├ídn├í, pak je hr├í─ì sesb├¡ral v┼íechny, tak┼¥e vyu┼¥ijeme funkci iterate, abychom je v┼íechny obnovili a nastav├¡me jejich pozici y na nulu. T├¡m donut├¡me v┼íechny hv─øzdi─ìky znovu spadnout z vr┼íku obrazovky.
V dal┼í├¡ ─ì├ísti k├│du vytvo┼Ö├¡me bombu. Nejd┼Ö├¡ve vybereme n├íhodnou pozici x tak, aby byla v┼¥dy na opa─ìn─ø stran─ø obrazovky, ne┼¥ je hr├í─ì, prost─ø proto, abychom mu dali ┼íanci. Pak bombu vytvo┼Ö├¡me a nastav├¡me tak, aby kolidovala s hranic├¡ sv─øta, odr├í┼¥ela se a m─øla n├íhodnou rychlost.
V├¢sledkem je roztomil├í bombi─ìka, co se odr├í┼¥├¡ po obrazovce. Dost mal├í, aby se j├¡ dalo na za─ì├ítku snadno vyhnout, ale brzy, jak jich bude v├¡c, to bude o dost t─ø┼¥┼í├¡!

A tím je naše hra dokončena :)
Z├ív─ør
Nau─ìili jste se, jak vytvo┼Öit sprite s fyzik├íln├¡mi vlastnostmi, ovl├ídat jeho pohyb a hl├¡dat jeho interakce s ostatn├¡mi objekty v mal├®m hern├¡m sv─øt─ø. Existuje velk├í spousta v─øc├¡, kter├¢mi to m┼»┼¥ete d├íle rozv├¡jet. Co t┼Öeba zv─øt┼íit velikost ├║rovn─ø a nechat kameru skrolovat? Nebo p┼Öidat dal┼í├¡ typy zloduch┼», jin├® cenn├® p┼Öedm─øty ke sb├¡r├ín├¡ nebo p┼Öidat hr├í─ìi indik├ítor zdrav├¡.
Nebo pro nen├ísiln├¢ styl ji m┼»┼¥ete upravit na typ hry speed-run a jen m─ø┼Öit hr├í─ìi, jak rychle dok├í┼¥e hv─øzdy posb├¡rat.
S t├¡m, co jste se nau─ìili v tomto tutori├ílu a s pomoc├¡ stovek p┼Ö├¡klad┼», kter├® jsou k dispozici, byste nyn├¡ m─øli m├¡t solidn├¡ z├íklad pro dal┼í├¡ projekty. Ale pokud m├íte ot├ízky, pot┼Öebujete radu nebo se chcete pod─ølit o to, na ─ìem pracujete, tak m┼»┼¥ete kdykoli po┼¥├ídat o radu na f├│ru k Phaseru.
Facebook Instant Games
Phaser 3 pln─ø podporuje tvorbu instantn├¡ch her na Facebooku (Facebook Instant Games). Te─Å jste se nau─ìili, jak vytvo┼Öit hru ve Phaseru. Pro─ì se nepod├¡vat, jak snadn├® to je ji zkonvertovat na instantn├¡ hru (Instant Game) ve specifick├®m pr┼»vodci Jak za─ì├¡t.