После подключения физики нужно сообщить движку об объектах, участвующих в физических расчётах. Начнём с платформ: добавим им тела и тем самым сделаем их известными физическому движку.
Что представляет собой физическое тело платформы? По сути, платформа — прямоугольный спрайт.
Чтобы движок обрабатывал платформу, создадим прямоугольник, точно соответствующий её контуру. Размеры и положение можно вычислить из координат и размеров текущей платформы.
В файле Platform.js:
import * as Matter from 'matter-js';
export class Platform {
constructor(rows, cols, x) {
// ...
// specify the speed of the platform
this.dx = App.config.platforms.moveSpeed;
this.createBody();
}
createBody() {
// create a physical body
this.body = Matter.Bodies.rectangle(this.width / 2 + this.container.x, this.height / 2 + this.container.y, this.width, this.height, {friction: 0, isStatic: true});
// add the created body to the engine
Matter.World.add(App.physics.world, this.body);
// save a reference to the platform object itself for further access from the physical body object
this.body.gamePlatform = this;
}
}
Для удобной настройки вынесем скорость платформ в глобальную конфигурацию:
export const Config = {
// ...
platforms: {
// ...
moveSpeed: -1.5
}
// ...
};