177 lines
4.7 KiB
JavaScript
177 lines
4.7 KiB
JavaScript
/*
|
||
*
|
||
* Реакции
|
||
*
|
||
*/
|
||
|
||
|
||
ЗагрузитьРесурсыКолобка= мир =>
|
||
{
|
||
мир.сцена.load.spritesheet(
|
||
"колобок",
|
||
"ресурсы/колобок/колобок.png",
|
||
{
|
||
frameWidth: 97,
|
||
frameHeight: 94,
|
||
}
|
||
);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьГруппыСущностей = мир =>
|
||
{
|
||
мир.каркас = мир.сцена.physics.add.staticGroup();
|
||
мир.платформы = мир.сцена.physics.add.staticGroup();
|
||
мир.враги = мир.сцена.add.group();
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СоздатьКолобка = мир =>
|
||
{
|
||
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
|
||
мир.колобок.depth = 10;
|
||
мир.колобок.body.setSize(50);
|
||
мир.колобок.setBounceY(0.1);
|
||
|
||
мир.сцена.anims.create({
|
||
key: "неподвижен",
|
||
frames: [{ key: "колобок", frame: 0 }],
|
||
frameRate: 20,
|
||
})
|
||
мир.сцена.anims.create({
|
||
key: "движение",
|
||
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
|
||
frameRate: 20,
|
||
repeat: -1,
|
||
})
|
||
мир.сцена.anims.create({
|
||
key: "прыжок",
|
||
frames: [{ key: "колобок", frame: 24 }],
|
||
frameRate: 20,
|
||
})
|
||
|
||
// Следить за колобком камерой.
|
||
const камера = мир.сцена.cameras.main;
|
||
камера.startFollow(мир.колобок, false, 0.1, 0.1);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОпределятьСтолкновениеКолобкаИВраговСГруппамиСущностей = мир =>
|
||
{
|
||
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
|
||
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);
|
||
|
||
|
||
мир.сцена.physics.add.collider(мир.враги, мир.каркас);
|
||
мир.сцена.physics.add.collider(мир.враги, мир.платформы);
|
||
|
||
var враг = мир.сцена.physics.add.sprite(100, 100, "основа");
|
||
враг.setScale(5, 5).refreshBody();
|
||
враг.depth = 10;
|
||
враг.setMass(10000);
|
||
мир.враги.add(враг);
|
||
|
||
|
||
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
|
||
столкновениеВраги.collideCallback = function(a, b) {
|
||
мир.уведомить("столкновение с врагом");
|
||
console.debug("столкновение с врагом");
|
||
};
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПереместитьКолобка = мир =>
|
||
{
|
||
if (!мир.управление)
|
||
{
|
||
мир.колобок.setVelocityX(0);
|
||
мир.колобок.anims.play("неподвижен");
|
||
return;
|
||
}
|
||
|
||
var x = 0;
|
||
if (мир.управление.направление == -1)
|
||
{
|
||
x = -200;
|
||
мир.колобок.anims.play("движение");
|
||
мир.колобок.flipX = true;
|
||
}
|
||
else if (мир.управление.направление == 1)
|
||
{
|
||
x = 200;
|
||
мир.колобок.anims.play("движение");
|
||
мир.колобок.flipX = false;
|
||
}
|
||
мир.колобок.setVelocityX(x);
|
||
|
||
if (мир.управление.прыжок && мир.колобок.body.touching.down)
|
||
{
|
||
мир.колобок.setVelocityY(-570);
|
||
мир.колобок.anims.play("прыжок");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОтключитьСтолкновениеСПлатформами = мир => {
|
||
мир.столкновениеПлатформы.active = false;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ВключитьСтолкновениеСПлатформами = мир => {
|
||
мир.столкновениеПлатформы.active = true;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОстановитьВрагов = мир => {
|
||
var враги = мир.враги.getChildren();
|
||
for (var н in враги)
|
||
{
|
||
var враг = враги[н];
|
||
враг.body.stop();
|
||
}
|
||
};
|
||
|
||
|
||
/*
|
||
*
|
||
* Последовательность
|
||
*
|
||
*/
|
||
|
||
|
||
мир.разобрать(`
|
||
загрузить ресурсы сцены
|
||
загрузить ресурсы колобка
|
||
создать сцену
|
||
создать группы сущностей
|
||
создать колобка
|
||
определять столкновение колобка и врагов с группами сущностей
|
||
изменили управление
|
||
переместить колобка
|
||
остановить врагов
|
||
столкновение с врагом
|
||
отключить столкновение с платформами
|
||
`);
|
||
|