diff --git a/index.html b/index.html index dba9305..0f6cb44 100644 --- a/index.html +++ b/index.html @@ -32,6 +32,7 @@ + diff --git a/игра/110.колобок.js b/игра/110.колобок.js index a8227b5..67e5886 100644 --- a/игра/110.колобок.js +++ b/игра/110.колобок.js @@ -79,7 +79,15 @@ НастроитьСтолкновениеКолобка = мир => { - мир.сцена.physics.add.collider(мир.колобок, мир.каркас); + var столкновениеКаркас = мир.сцена.physics.add.collider(мир.колобок, мир.каркас); + столкновениеКаркас.collideCallback = function(a, каркас) { + if (мир.колобок.body.touching.down && каркас.body.touching.up && мир.колобок.прыжок) + { + мир.колобок.каркас = каркас.name; + мир.уведомить("колобок прыгнул на каркас"); + } + }; + мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы); мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи); diff --git a/игра/111.изба.js b/игра/111.изба.js index 0737e65..e723da7 100644 --- a/игра/111.изба.js +++ b/игра/111.изба.js @@ -69,7 +69,7 @@ originX: 0, originY: 0, scaleX: 43, - visible: true, + visible: false, }, полКрышки: { родитель: мир.каркас, @@ -80,16 +80,16 @@ originX: 0, originY: 0, scaleX: 16, - visible: true, + visible: false, }, крышка: { родитель: мир.сцена, тип: "изображение", x: 357, - y: 575, + y: 605, texture: "крышка-подпола", originX: 0, - originY: 0, + originY: 1, scaleX: 0.4, scaleY: 0.4, }, @@ -102,7 +102,7 @@ originX: 0, originY: 0, scaleX: 200, - visible: true, + visible: false, }, леваяСтена: { @@ -459,9 +459,6 @@ { создатьУзлыСценыПоСтруктуре(мир.изба); мир.сцена.sound.play("звук-избы", { loop: true }); - -мир.крышка = мир.узелСцены("крышка"); -мир.полКрышки = мир.узелСцены("полКрышки"); }; @@ -877,6 +874,75 @@ }; +// // // // + + +ПроверитьПрыжокПоКрышкеПодпола = мир => +{ + if (мир.колобок.каркас == "полКрышки") + { + мир.уведомить("колобок прыгнул по крышке подпола"); + } +}; + + +// // // // + + +НачатьПоворотКрышкиПодпола = мир => +{ + if (мир.крышка) + { + return; + } + + мир.крышка = мир.узелСцены("крышка"); + мир.крышка.поворот = 1; +}; + + +// // // // + + +АнимироватьПоворотКрышкиПодпола = мир => +{ + if (!мир.крышка) + { + return; + } + + var скорость = 4; + + if (мир.крышка.поворот == 1) + { + мир.крышка.setAngle(мир.крышка.angle - скорость); + if (мир.крышка.angle <= -90) + { + мир.крышка.поворот = 2; + } + } + else if (мир.крышка.поворот == 2) + { + мир.узелСцены("полКрышки").body.checkCollision.none = true; + мир.крышка.поворот = 3; + setTimeout( + function() { + мир.крышка.поворот = 4; + }, + 5000 + ); + } + else if (мир.крышка.поворот == 4) + { + мир.крышка.setAngle(мир.крышка.angle + скорость); + if (мир.крышка.angle >= 0) + { + мир.узелСцены("полКрышки").body.checkCollision.none = false; + мир.крышка = null; + } + } +}; + /* * * Последовательность @@ -928,10 +994,15 @@ перевернули молоко показать лужу молока воспроизвести звук переворота молока +колобок прыгнул на каркас + проверить прыжок по крышке подпола +колобок прыгнул по крышке подпола + начать поворот крышки подпола обновить сцену анимировать пауков анимировать мышей анимировать переворот молока + анимировать поворот крышки подпола `); diff --git a/игра/112.подпол.js b/игра/112.подпол.js new file mode 100644 index 0000000..e9deaad --- /dev/null +++ b/игра/112.подпол.js @@ -0,0 +1,87 @@ +/* + * + * Реакции + * + */ + + +ЗагрузитьРесурсыПодпола = мир => +{ + const изображения = { + "лестница": "ресурсы/вещи/лестница.png", + }; + for (var имя in изображения) + { + мир.сцена.load.image(имя, изображения[имя]); + } +}; + + +// // // // + + +ЗадатьСтруктуруПодпола = мир => +{ + мир.подпол = { + пол: { + родитель: мир.каркас, + тип: "платформа", + x: 0, + y: 985, + texture: "основа", + originX: 0, + originY: 0, + scaleX: 250, + visible: true, + }, + + леваяСтена: { + родитель: мир.каркас, + тип: "платформа", + x: 0, + y: 600, + texture: "основа", + originX: 0, + originY: 0, + scaleY: 50, + visible: false, + }, + праваяСтена: { + родитель: мир.каркас, + тип: "платформа", + x: 2000, + y: 600, + texture: "основа", + originX: 0, + originY: 0, + scaleY: 50, + visible: false, + }, + }; +}; + + +// // // // + + +СоздатьПодпол = мир => +{ + создатьУзлыСценыПоСтруктуре(мир.подпол); +}; + + +/* + * + * Последовательность + * + */ + + +мир.разобрать(` +загрузить ресурсы сцены + загрузить ресурсы подпола +создать сцену + задать структуру подпола + создать подпол +`); + diff --git a/ресурсы/вещи/лестница.png b/ресурсы/вещи/лестница.png new file mode 100644 index 0000000..cc4a102 Binary files /dev/null and b/ресурсы/вещи/лестница.png differ diff --git a/ресурсы/вещи/лестница.xcf b/ресурсы/вещи/лестница.xcf new file mode 100644 index 0000000..70a4fdb Binary files /dev/null and b/ресурсы/вещи/лестница.xcf differ