Files
K/игра/110.колобок.js

177 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*
* Реакции
*
*/
ЗагрузитьРесурсыКолобка= мир =>
{
мир.сцена.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(750, 100, "основа");
враг.setScale(5, 5).refreshBody();
враг.depth = 10;
мир.враги.add(враг);
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
столкновениеВраги.overlapOnly = true;
столкновениеВраги.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();
}
};
/*
*
* Последовательность
*
*/
мир.разобрать(`
загрузить ресурсы сцены
загрузить ресурсы колобка
создать сцену
создать группы сущностей
создать колобка
определять столкновение колобка и врагов с группами сущностей
изменили управление
переместить колобка
остановить врагов
столкновение с врагом
отключить столкновение с платформами
`);