Navigation

Част 4 - Платформите

Току-що добавихме доста код в нашата функция create, който заслужава подробно обяснение. Да започнем с тази част:

platforms = this.physics.add.staticGroup();

Тя създава нова статична физична група и я записва в променливата platforms. В Arcade Physics има два вида физични тела: динамични и статични. Едно динамично тяло (назовано в кода с термина dynamic) може да бъде местено със сили, като скорост и ускорение. Може да отскача и да се сблъсква с други тела, като въпросният сблъсък се влияе от масата на тялото и други негово свойства.

В огромен контраст, статичното тяло (в кода, static) има само позиция и размер. Не се влияе от гравитация, не може да има скорост и не може да бъде изместено след сблъсък с друго тяло - то е статично и по име, и по природа. Разбира се, тези тела са идеални за земята и за платформите, върху които ще тича играчът.

А какво представляват групите (наричани Group в кода)? Както подсказва името им, те са начин, по който можете да групирате подобни обекти и да ги контролирате като един. Също можете да проверявате за сблъсък между група и друг обект на играта. Групите притежават помощни функции като create, с които могат да създадат собствени обекти на играта. Физичната група (Physics Group) Ви позволява автоматично да включите обектите ѝ към физичната симулация, което ви спестява малко труд.

След като сме създали група за платформите си, можем да я използваме, за да създадем самите платформи:

platforms.create(400, 568, 'ground').setScale(2).refreshBody();

platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');

Както видяхме по-рано, това създава следната сцена:

Докато зареждахме ресурсите си, ние вкарахме изображение на име ground. То представлява прост зелен правоъгълник с размер 400x32 пиксела и ще служи като нашите платформи:

image

Първият ред код горе добавя ново изображение на координати (400; 568) - помнете, че координатите на изображенията са спрямо техния център. Проблемът е, че тази платформа трябва да е толкова дълга, колкото и екрана на играта, иначе играчът ще изпадне от страните. Можем да решим това като увеличим изображението 2 пъти с функцията setScale(2) (от английската дума за "мащаб"). Неговият размер ще стане 800x64, което е толкова широко колкото екрана на играта. Понеже променяме размера на статично физично тяло, ние трябва да кажем на физичната симулация за промените чрез функцията refreshBody().

След като сме поставили основната платформа на място, вече е време и за другите платформи:

platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');

Процесът е същият като миналия път, но в този случай не се налага да уголемяваме платформите, защото те вече са с правилния размер.

Из екрана вече са поставени 3 платформи на разстояния, които ще позволяват на играча да скочи до тях.

И така, нека да добавим въпросния играч.