Právě jsme přidali spoustu kódu do funkce create
, který si zaslouží detailnější vysvětlení. Nejdříve tato část:
platforms = this.physics.add.staticGroup();
Toto vytváří novou skupinu těles, statických z hlediska fyziky (Static Physics Group), a přiřazuje ji proměnné platforms
. V arkádové fyzice jsou dva typy těles: dynamická a statická. Dynamická tělesa se mohou pohybovat a jejich pohyb je možné ovlivňovat působením sil, jako je třeba zrychlení. Mohou se odrážet a kolidovat s ostatními tělesy a jejich reakce na kolize je dána jejich hmotností a dalšími parametry.
V přímém kontrastu, statická tělesa mají jen pozici a velikost. Nepůsobí na ně gravitace, nelze jim nastavit rychlost a když do nich něco narazí, tak se nepohnou. Zkrátka jsou přesně tak statická, jak se jmenují. A proto jsou vhodná pro podlahu a plošinky, na kterých necháme pobíhat hráče.
Ale co je skupina (Group)? Jak naznačuje název, jejím cílem je sdružovat podobné objekty a ovládat je všechny najednou jako jeden celek. Dokonce je možné testovat kolize mezi skupinami a ostatními herními objekty. Skupiny jsou schopné vytvářet své vlastní herní objekty prostřednictvím šikovných pomocných funkcí jako create
. Fyzikální skupina (Physics Group) automaticky vytvoří potomky s aktivovanou fyzikou a tím vám ušetří nějakou námahu.
Skupinu pro plošinky můžeme nyní využít k vytvoření jednotlivých plošinek:
platforms.create(400, 568, 'ground').setScale(2).refreshBody();
platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');
Jak jsme už dříve viděli, vytváří to tuto scénu:
Během nahrávání obrázků jsme naimportovali obrázek 'ground'. To je jednoduchý zelený obdélník s rozměry 400 x 32 pixelů, který nám poslouží jako základ pro plošinky:
První řádek kódu výše přidává obrázek pro podlahu na pozici 400 x 568 (vzpomeňte si, že obrázky jsou umísťované na pozici svým středem). Problém je, že potřebujeme, aby se tato plošinka představující podlahu roztáhla na celou šířku naší hry, jinak by hráč na krajích mohl spadnout dolů. Docílíme toho tím, že ji zvětšíme x2 pomocí funkce setScale(2)
. Takže nyní má velikost 800 x 64, což přesně potřebujeme. Volání refreshBody()
je nutné, protože jsme změnili velikost statického fyzikálního tělesa a musíme herní fyzice, spravující fyzikální svět hry, tuto změnu oznámit.
Podlaha je zvětšena a na místě, takže je čas na další plošinky:
platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');
Postup je úplně stejný jako předtím, jen nepotřebujeme u těchto plošinek měnit velikost, protože nám stávající vyhovuje.
3 plošinky jsou umístěné na obrazovce v dobrých vzdálenostech tak, aby na ně mohl hráč skočit.
Takže, přidejme hráče.