Kolizje s─à spoko i w og├│le cool, ale musimy jeszcze da─ç┬ágraczowi mo┼╝liwo┼ø─ç poruszania si─Ö. My┼ølisz prawdopodobnie ┼╝eby uda─ç si─Ö na stron─Ö┬áz dokumentacj─à i poszuka─ç jak dodawa─ç obserwacje zdarze┼ä (event listener). W Phaserze jest to o wiele prostsze. Posiada on mianowicie wbudowany mened┼╝er dla klawiatury. Zobacz jakie to banalne:

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

Ten kod stworzy automatycznie obiekt obs┼éuguj─àcy strza┼éki klawiatury: g├│ra, d├│┼é, lewo i prawo. Wszystkie klawisze s─à instancjami obiektu Key. To co pozostaje nam zrobi─ç to oczekiwa─ç na ich naci┼øni─Öcie w p─Ötli 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);
}

Mimo, ┼╝e dodali┼ømy tutaj sporo kodu powinien on by─ç ┼éatwy do zrozumienia.

Pierwsz─à rzecz─à, kt├│r─à dokonuje jest sprawdzenie czy lewy klawisz jest wci┼øni─Öty. Je┼╝eli jest, dodajemy negatywn─à horyzontaln─à pr─Ödko┼ø─ç i uruchamiamy animacj─Ö biegania 'left'. Odwrotnie post─Öpujemy w przypadku strza┼éki w prawo. Zeruj─àc pr─Ödko┼ø─ç gracza, gdy ┼╝aden klawisz nie jest przyci┼øni─Öty, tworzymy animacj─Ö typu 'stop-start'.

Sprite reprezentuj─àcy gracza b─Ödzie si─Ö przemieszcza┼é jedynie wtedy gdy kt├│ry┼ø z klawiszy b─Ödzie wci┼øni─Öty i zatrzyma si─Ö natychmiast w przeciwnym wypadku. Phaser pozwala na tworzenie bardziej skomplikowanego ruchu z uwzgl─Ödnieinem p─Ödu i przy┼øpieszenia, jednak┼╝e akurat do tej gry nie b─Ödziemy go potrzebowa─ç. Ostatni─à cz─Ö┼øci─à jest ustawienie klatki animacji na 'turn' i zerowanie pr─Ödko┼øci gdy ┼╝aden klawisz nie jest wci┼øni─Öty.

Skakanie

Ostatnia cz─Ö┼ø─ç kodu daje graczowi mo┼╝liwo┼ø─ç skakania. G├│rna strza┼éka odpowiada za skok i sprawdzamy w tym miejscu czy nie jest wci┼øni─Öta. Opr├│cz tego sprawdzamy czy gracz nie dotyka pod┼éo┼╝a w momencie skoku. W innym przypadku pozwoliliby┼ømy mu na niesko┼äczone ponowne skakanie w powietrzu.

Je┼╝eli oba warunki s─à spe┼énione, nadajemy graczowi wertykaln─à pr─Ödko┼ø─ç o warto┼øci 330 pikseli na sekund─Ö kwadrat. Gracz opadnie spowrotem na ziemi─Ö poniewa┼╝ dzia┼éa na niego wcze┼øniej zadeklarowana grawitacja. Z w┼é─àczonym sterowaniem gracza mamy ju┼╝ ┼øwiat, kt├│ry mo┼╝na ekspolorowa─ç. Za┼éaduj plik part7.html i pobaw si─Ö ┼╝eby sprawdzi─ç jak to dzia┼éa. Spr├│buj pozmienia─ç r├│┼╝ne warto┼øci, takie jak wspomnianie 330 pikseli, na mniej lub wi─Öcej i zobacz co si─Ö stanie.

image