Phaser podporuje celou ┼Öadu r┼»zn├¢ch fyzik├íln├¡ch syst├®m┼», z nich┼¥ ka┼¥d├¢ funguje jako plugin dostupn├¢ ka┼¥d├® sc├®n─ø. V dob─ø psan├¡ tohoto textu ┼ílo o ark├ídovou fyziku (Arcade Physics) a fyzik├íln├¡ enginy Impact Physics a Matter.js. Pro tento tutori├íl pou┼¥├¡v├íme jednoduchou a odleh─ìenou ark├ídovou fyziku, perfektn├¡ pro mobiln├¡ prohl├¡┼¥e─ìe.

Kdy┼¥ je vytvo┼Öen sprite, kter├¢ m├í reagovat na hern├¡ fyziku (Physics Sprite), je mu p┼Öid─ølena vlastnost body, co┼¥ je reference na jeho fyzik├íln├¡ t─øleso (Arcade Physics Body) uvnit┼Ö syst├®mu ark├ídov├® fyziky. Objekt 'body' m├í spoustu vlastnost├¡ a metod, se kter├¢mi si m┼»┼¥eme hr├ít.

Například pro simulování efektu gravitace na sprite jednoduše napíšeme:

player.body.setGravityY(300)

Parametrem je libovoln├í hodnota, ale logicky, vy┼í┼í├¡ hodnota znamen├í rychlej┼í├¡ p├íd. Pokud p┼Öid├íte tento k├│d nebo spust├¡te part5.html, uvid├¡te hr├í─ìe, jak pad├í dol┼» bez zastaven├¡ a ├║pln─ø ignoruje podlahu, kterou jsme vytvo┼Öili d┼Ö├¡ve:

image

D┼»vodem je, ┼¥e zat├¡m je┼ít─ø netestujeme kolize mezi podlahou a hr├í─ìem.

U┼¥ jsme Phaseru ┼Öekli, ┼¥e na┼íe podlaha a plo┼íinky jsou statick├í t─ølesa. Pokud bychom to neud─ølali a vytvo┼Öili m├¡sto nich dynamick├í, potom, kdy┼¥ by s nimi hr├í─ì kolidoval, tak by se na chvilku zastavil a pak by se v┼íe rozpadlo. To proto, ┼¥e pokud nen├¡ ┼Öe─ìeno jinak, sprite pro podlahu je dynamick├¢ a kdy┼¥ do n─øj hr├í─ì naraz├¡, tak v├¢sledn├í s├¡la kolize je na n─øj aplikov├ína. T─ølesa si vym─øn├¡ svou rychlost a podlaha za─ìne tak├® padat.

Abychom umo┼¥nili hr├í─ìi kolidovat s plo┼íinkami, vytvo┼Ö├¡me objekt Collider. Tento objekt monitoruje dva fyzik├íln├¡ objekty (co┼¥ m┼»┼¥e zahrnovat i skupiny - Groups) a testuje kolize nebo p┼Öekryt├¡ mezi nimi. Pokud k nim dojde, tak je mo┼¥n├® voliteln─ø vyvolat zp─øtn├® vol├ín├¡ (callback), ale pro prostou kolizi s plo┼íinkami to nepot┼Öebujeme.

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

Collider je ten, kdo prov├íd├¡ kouzlo. Vezme dva objekty, testuje, zda koliduj├¡ a provede jejich separaci. V na┼íem p┼Ö├¡pad─ø mu p┼Öed├ív├íme hr├í─ìe a skupinu plo┼íinek. Je dostate─ìn─ø chytr├¢, aby testoval kolizi v┼»─ìi v┼íem ─ìlen┼»m skupiny, tak┼¥e toto jedno vol├ín├¡ otestuje kolizi s podlahou a v┼íemi plo┼íinkami. V├¢sledkem je jsou pevn├® plo┼íinky, kter├® se nezhrout├¡:

image