Току-що добавихме доста код в нашата функция 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 пиксела и ще служи като нашите платформи:
Първият ред код горе добавя ново изображение на координати (400; 568) - помнете, че координатите на изображенията са спрямо техния център. Проблемът е, че тази платформа трябва да е толкова дълга, колкото и екрана на играта, иначе играчът ще изпадне от страните. Можем да решим това като увеличим изображението 2 пъти с функцията setScale(2)
(от английската дума за "мащаб"). Неговият размер ще стане 800x64, което е толкова широко колкото екрана на играта. Понеже променяме размера на статично физично тяло, ние трябва да кажем на физичната симулация за промените чрез функцията refreshBody()
.
След като сме поставили основната платформа на място, вече е време и за другите платформи:
platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');
Процесът е същият като миналия път, но в този случай не се налага да уголемяваме платформите, защото те вече са с правилния размер.
Из екрана вече са поставени 3 платформи на разстояния, които ще позволяват на играча да скочи до тях.
И така, нека да добавим въпросния играч.