Navigation

Část 7 - Ovládání klávesnicí

Published on 20th February 2018

Kolize jsou bezva, ale co opravdu potřebujeme je, aby se hráč hýbal. Pravděpodobně byste zamířili do dokumentace a hledali, jak přidat posluchače k událostem ze vstupu, ale to zde není potřeba. Phaser má vestavěný manažer klávesnice (Keyboard manager) a jedna z jeho výhod je tato malá funkce:

cursors = this.input.keyboard.createCursorKeys();

Dá objektu cursor čtyři vlastnosti: up, down, left, right, které jsou všechny instancemi objektu Key. Potom vše, co potřebujeme, je dotazovat se na jejich stav během pravidelného volání update:

if (cursors.left.isDown)
{
    player.setVelocityX(-160);

    player.anims.play('left', true);
}
else if (cursors.right.isDown)
{
    player.setVelocityX(160);

    player.anims.play('right', true);
}
else
{
    player.setVelocityX(0);

    player.anims.play('turn');
}

if (cursors.up.isDown && player.body.touching.down)
{
    player.setVelocityY(-330);
}

Přesto, že jsme přidali spoustu kódu, tak by to mělo být docela srozumitelné.

Nejdříve se zkontroluje, zda je držena klávesa left stisknutá. Pokud ano, nastavíme zápornou horizontální rychlost a spustíme animaci pohybu doleva ('left'). Je-li místo toho držena klávesa right, uděláme doslova opak. Tímto způsobem nastavování rychlosti v každém snímku docílíme vytvoření pohybu ve stylu stop-start.

Hráč se bude pohybovat jen tehdy, když je klávesa držena stisknutá a zastaví hned, jak je uvolněna. Phaser také umožňuje vytvářet mnohem komplexnější pohyb s hybností a zrychlením, ale to pro tuto hru nepotřebujeme. Zbytek testování nuluje rychlost a nastavuje animaci na animaci 'turn', pokud není žádná klávesa stisknutá.

Skok

Poslední část kódu přidává skok. Naší klávesou pro skok je klávesa se šipkou nahoru (up) a my testujeme, zda je stisknutá. Nicméně, testujeme navíc ještě, zda se hráč dotýká plošinky, jinak by mohl skákat i ve vzduchu.

Pokud jsou obě podmínky splněné, nastavíme vertikální rychlost na 330 pixelů za vteřinu (záporná hodnota znamená směr nahoru). Hráč bude padat zpět na zem automaticky, protože na něj působí gravitace. S dokončeným ovládáním máme nyní herní svět, který můžeme procházet. Spusťte part7.html a zkuste to. Pohrajte si s hodnotami jako je 330 pro skok. Zkuste je zvýšit nebo snížit a pozorujte, jaký to má vliv.

image