Phaser underst├©tter en r├ªkke forskellige fysiksystemer, der hver is├ªr er et plugin som er tilg├ªngeligt for enhver Phaser Scene. P├Ñ nuv├ªrende tidspunkt underst├©ttes Arcade Physics, Impact Physics og Matter.js Physics. I denne tutorial benytter vi Arcade Physics til vores spil, da det er enkelt og letv├ªgts, perfekt til mobile browsere.

Når en Physics Sprite skabes, får den egenskaben body, som er en reference til dens Arcade Physics Body. Denne repræsenterer spriten som et fysisk legeme i regi af Phasers Arcade Physics engine. Legemet har en masse egenskaber, som vi kan lege med.

For eksempel er det at simulere effekten af tyngdekraft på legemet så enkelt som at skrive:

player.body.setGravityY(300)

Dette er en vilk├Ñrlig v├ªrdi, men logisk nok vil legemet f├©les tungere og falde hurtigere, jo h├©jere vi s├ªtter v├ªrdien. Hvis du f├©jer denne linje til din egen kode eller k├©rer part5.html i en browser, vil du se at spilleren falder ned uden at stoppe og fuldst├ªndig ignorerer jorden, som vi skabte tidligere:

image

Grunden til dette er at vi endnu ikke checker for kollisioner mellem jorden og spilleren.

Vi har allerede fortalt Phaser at jorden og platformene skal v├ªre statiske legemer. Havde vi ikke gjort det, men skabt dynamiske i stedet, s├Ñ ville kollisioner mellem spilleren og dem betyde en kort opbremsning hvorefter alt brasede sammen. S├Ñ ville jorden v├ªre et bev├ªgeligt fysiklegeme, og ved kollision ville spillerens hastighed overf├©res delvist til det, hvorved ogs├Ñ jorden ville begynde at falde ned.

For at lade spilleren kollidere med platformene kan vi skabe et Collider objekt. Dette objekt overv├Ñger to fysikobjekter (hvilket kan inkludere grupper) og checker for kollisioner eller overlap imellem dem. Hvis s├Ñdanne forekommer, kan man eventuelt v├ªlge at kalde sin egen callback-funktion, men det beh├©ver vi ikke her, hvor det bare handler om at kollidere med platforme:

this.physics.add.collider(player, platforms);

Det er Collider-objektet, der udf├©rer magien. Det tager to objekter, tester for kollision og skiller dem ad igen. I dette tilf├ªlde giver vi det spillerens sprite og platforms-gruppen. Det er snedigt nok til at teste for kollision mellem spilleren og alle gruppens medlemmer, s├Ñ med dette ene kald checkes for kollision med jorden og alle platformene. Resultatet er statiske platform, der ikke braser sammen.

image