Del 7 - Bevægelse med tastaturet

By Richard Davey on 20. Februar 2018   @photonstorm

Så kom kollisionerne på plads, men vi har brug for at spilleren bevæger sig. Du overvejer måske at besøge Phasers dokumentationssider og søge efter måder at tilføje en event listener, men det behøver vi ikke her. Phaser har en indbygget Keyboard manager (tastaturmanager), og en af fordelen ved at benytte den, er denne smarte lille funktion:

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

Den befolker cursors-objektet med fire egenskaber: up, down, left, right (op, ned, venstre, højre), der alle er instanser af Key-objekter. Derefter behøver vi blot checke disse i vores update-loop.

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);
}

Selv om vi har tilføjet en del kode, er det vist altsammen ret let at læse.

Først checkes det om den venstre piletast holdes nede. Hvis den bliver det, tilføjer vi negativ vandret hastighed og påbegynder løb-til-venstre-animationen. Hvis højre piletast holdes nede i stedet, gør vi bogstaveligt talt det modsatte. Ved at nulstille hastigheden og genindstille den i hver frame på denne måde, skaber vi et stop-start agtig bevægelsesmønster.

Spilleren bevæger sig kun når en piletast holdes nede, og stopper ellers øjeblikkeligt. Phaser giver også mulighed for at skabe mere komplekse bevægelsesmønstre med momentum og accelleration, men det her giver os den effekt, vi skal bruge til dette spil. Den sidste del af taste-checkene sætter animationen til 'turn' og den vandrette hastighed til 0, hvis ingen piletast holdes nede.

Spring til det

Den sidste del af koden tilføjer evnen til at springe. Piletasten op er vore hoppe-knap, så vi checker om den holdes nede. Men vi checker også om spilleren rører ved jorden, for ellers kunne han hoppe mens han allerede var i luften.

Hvis begge disse betingelser opfyldes, påfører vi spilleren en lodret hastighed på 330 pixels per kvadratsekund. Spilleren vil herefter automatisk falde til jorden igen under påvirkning af tyngdekraften. Med spilstyringen på plads har vi nu en spilverden, som vi kan udforske. Indlæs part7.html i browseren og prøv et spil. Prøv også at ændre værdierne, fx de 330 i springet, til højere og lavere værdier for at se hvilken effekt det har.

image