This commit is contained in:
2021-04-23 15:03:07 +03:00
parent 288f525aa8
commit 26dd509faf
5 changed files with 131 additions and 66 deletions

View File

@@ -21,40 +21,13 @@
// // // //
СоздатьГруппыСущностей = мир =>
{
мир.каркас = мир.сцена.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,
})
// Портит анимацию прыжков!
//мир.колобок.setBounceY(0.1);
// Следить за колобком камерой.
const камера = мир.сцена.cameras.main;
@@ -65,26 +38,41 @@
// // // //
ОпределятьСтолкновениеКолобкаИВраговСГруппамиСущностей = мир =>
СоздатьАнимацииКолобка = мир =>
{
var анимации = мир.сцена.anims;
анимации.create({
key: "колобок-неподвижен",
frames: [{ key: "колобок", frame: 0 }],
frameRate: 20,
})
анимации.create({
key: "колобок-движение",
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
frameRate: 20,
repeat: -1,
})
анимации.create({
key: "колобок-прыжок",
frames: [{ key: "колобок", frame: 24 }],
frameRate: 20,
})
};
// // // //
НастроитьСтолкновениеКолобка = мир =>
{
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
мир.сцена.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("столкновение с врагом");
};
};
@@ -97,7 +85,6 @@
if (!мир.управление)
{
мир.колобок.setVelocityX(0);
мир.колобок.anims.play("неподвижен");
return;
}
@@ -105,13 +92,11 @@
if (мир.управление.направление == -1)
{
x = -200;
мир.колобок.anims.play("движение");
мир.колобок.flipX = true;
}
else if (мир.управление.направление == 1)
{
x = 200;
мир.колобок.anims.play("движение");
мир.колобок.flipX = false;
}
мир.колобок.setVelocityX(x);
@@ -119,7 +104,34 @@
if (мир.управление.прыжок && мир.колобок.body.touching.down)
{
мир.колобок.setVelocityY(-570);
мир.колобок.anims.play("прыжок");
}
};
// // // //
АнимироватьКолобка = мир => {
var есть = "";
if (мир.колобок.anims.currentAnim)
{
есть = мир.колобок.anims.currentAnim.key;
}
var надо = "колобок-неподвижен";
if (мир.управление && мир.управление.прыжок && !мир.колобок.body.touching.down)
{
надо = "колобок-прыжок";
}
else if (мир.колобок.body.velocity.x != 0)
{
надо = "колобок-движение";
}
if (есть != надо)
{
мир.колобок.anims.play(надо);
мир.уведомить("изменили анимацию колобка");
}
};
@@ -128,7 +140,7 @@
ОтключитьСтолкновениеСПлатформами = мир => {
мир.столкновениеПлатформы.active = false;
мир.столкновениеПлатформы.active = false;
};
@@ -136,19 +148,19 @@
ВключитьСтолкновениеСПлатформами = мир => {
мир.столкновениеПлатформы.active = true;
мир.столкновениеПлатформы.active = true;
};
// // // //
ОстановитьВрагов = мир => {
var враги = мир.враги.getChildren();
for (var н in враги)
ОстановитьПередвижениеВещей = мир => {
var вещи = мир.вещи.getChildren();
for (var н in вещи)
{
var враг = враги[н];
враг.body.stop();
var вещь = вещи[н];
вещь.body.stop();
}
};
@@ -164,13 +176,16 @@
загрузить ресурсы сцены
загрузить ресурсы колобка
создать сцену
создать группы сущностей
создать колобка
определять столкновение колобка и врагов с группами сущностей
создать анимации колобка
настроить столкновение колобка
изменили управление
переместить колобка
остановить врагов
столкновение с врагом
отключить столкновение с платформами
обновить сцену
анимировать колобка
изменили анимацию колобка
остановить передвижение вещей
`);