|
|
@@ -21,70 +21,58 @@ |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьГруппыСущностей = мир => |
|
|
|
СоздатьКолобка = мир => |
|
|
|
{ |
|
|
|
мир.каркас = мир.сцена.physics.add.staticGroup(); |
|
|
|
мир.платформы = мир.сцена.physics.add.staticGroup(); |
|
|
|
мир.враги = мир.сцена.add.group(); |
|
|
|
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок"); |
|
|
|
мир.колобок.depth = 10; |
|
|
|
мир.колобок.body.setSize(50); |
|
|
|
// Портит анимацию прыжков! |
|
|
|
//мир.колобок.setBounceY(0.1); |
|
|
|
|
|
|
|
// Следить за колобком камерой. |
|
|
|
const камера = мир.сцена.cameras.main; |
|
|
|
камера.startFollow(мир.колобок, false, 0.1, 0.1); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
СоздатьКолобка = мир => |
|
|
|
СоздатьАнимацииКолобка = мир => |
|
|
|
{ |
|
|
|
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок"); |
|
|
|
мир.колобок.depth = 10; |
|
|
|
мир.колобок.body.setSize(50); |
|
|
|
мир.колобок.setBounceY(0.1); |
|
|
|
|
|
|
|
мир.сцена.anims.create({ |
|
|
|
key: "неподвижен", |
|
|
|
var анимации = мир.сцена.anims; |
|
|
|
анимации.create({ |
|
|
|
key: "колобок-неподвижен", |
|
|
|
frames: [{ key: "колобок", frame: 0 }], |
|
|
|
frameRate: 20, |
|
|
|
}) |
|
|
|
мир.сцена.anims.create({ |
|
|
|
key: "движение", |
|
|
|
анимации.create({ |
|
|
|
key: "колобок-движение", |
|
|
|
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }), |
|
|
|
frameRate: 20, |
|
|
|
repeat: -1, |
|
|
|
}) |
|
|
|
мир.сцена.anims.create({ |
|
|
|
key: "прыжок", |
|
|
|
анимации.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(мир.враги, мир.каркас); |
|
|
|
мир.сцена.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 @@ |
|
|
|
загрузить ресурсы сцены |
|
|
|
загрузить ресурсы колобка |
|
|
|
создать сцену |
|
|
|
создать группы сущностей |
|
|
|
создать колобка |
|
|
|
определять столкновение колобка и врагов с группами сущностей |
|
|
|
создать анимации колобка |
|
|
|
настроить столкновение колобка |
|
|
|
изменили управление |
|
|
|
переместить колобка |
|
|
|
остановить врагов |
|
|
|
столкновение с врагом |
|
|
|
отключить столкновение с платформами |
|
|
|
обновить сцену |
|
|
|
анимировать колобка |
|
|
|
изменили анимацию колобка |
|
|
|
остановить передвижение вещей |
|
|
|
`); |
|
|
|
|