From 43ffa72790ede30208603feaca1fcd623ef95687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 26 May 2021 14:25:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D1=8C=20=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- игра/110.колобок.js | 60 +++++++++++++--------------------- игра/111.изба.js | 4 +-- игра/112.подпол.js | 32 ++++++++++++++++++ 3 files changed, 56 insertions(+), 40 deletions(-) diff --git a/игра/110.колобок.js b/игра/110.колобок.js index b531063..d97b87d 100644 --- a/игра/110.колобок.js +++ b/игра/110.колобок.js @@ -94,16 +94,18 @@ мир.столкновениеВещи.collideCallback = function(a, вещь) { var кк = мир.колобок.body.touching; var кв = вещь.body.touching; + + if (!мир.передвигаемыеВещи) + { + мир.передвигаемыеВещи = { }; + } + мир.передвигаемыеВещи[вещь.name] = new Date(); + if (кк.down && кв.up && мир.колобок.прыжок) { мир.колобок.вещь = вещь.name; мир.уведомить("колобок прыгнул на вещь"); } - // Передвижение вещей. - if (кк.down && (кк.left || кк.right) && (кв.left || кв.right)) - { - мир.колобок.датаПередвиженияВещи = new Date(); - } }; var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги); @@ -236,23 +238,6 @@ // // // // -ОстановитьПередвижениеВещей = мир => -{ - var вещи = мир.вещи.getChildren(); - for (var н in вещи) - { - var вещь = вещи[н]; - if (вещь.body.touching.down) - { - вещь.body.stop(); - } - } -}; - - -// // // // - - НачатьМиганиеКолобка = мир => { var конец = new Date(); @@ -344,29 +329,29 @@ // // // // -ОпределитьПередвижениеВещей = мир => +ОстановитьСкользящиеВещи = мир => { - if (!мир.колобок.датаПередвиженияВещи) + if (!мир.передвигаемыеВещи) { return; } - var было = мир.колобок.передвижениеВещи != null ? мир.колобок.передвижениеВещи : false; - var стало = new Date() - мир.колобок.датаПередвиженияВещи < 10; - if (было != стало) + var сейчас = new Date(); + for (var имя in мир.передвигаемыеВещи) { - мир.колобок.передвижениеВещи = стало; - if (стало) + var было = мир.передвигаемыеВещи[имя]; + var узел = мир.узелСцены(имя); + if (узел && (сейчас - было > 20)) { - console.debug("колобок начал передвижение вещи"); - мир.уведомить("колобок начал передвижение вещи"); - } - else - { - console.debug("колобок закончил передвижение вещи"); - мир.уведомить("колобок закончил передвижение вещи"); + узел.body.stop(); + delete мир.передвигаемыеВещи[имя]; } } + + if (!Object.keys(мир.передвигаемыеВещи).length) + { + мир.передвигаемыеВещи = null; + } }; @@ -391,8 +376,7 @@ анимировать колобка определить окончание прыжка колобка мигать колобка - определить передвижение вещей -# остановить передвижение вещей + остановить скользящие вещи колобок начал прыжок воспроизвести звук прыжка вывести начало прыжка в консоль diff --git a/игра/111.изба.js b/игра/111.изба.js index be79a9a..a36e27e 100644 --- a/игра/111.изба.js +++ b/игра/111.изба.js @@ -297,8 +297,8 @@ x: 200, y: 200, texture: "самовар", - scaleX: 0.25, - scaleY: 0.25, + scaleX: 0.2, + scaleY: 0.2, depth: 5, }, diff --git a/игра/112.подпол.js b/игра/112.подпол.js index 2fa3d7e..06e2703 100644 --- a/игра/112.подпол.js +++ b/игра/112.подпол.js @@ -22,6 +22,13 @@ ЗадатьСтруктуруПодпола = мир => { + function платформаПрыжков(узел) { + var ограничить = узел.body.checkCollision; + ограничить.down = false; + ограничить.left = false; + ограничить.right = false; + } + мир.подпол = { полПодпола: { родитель: мир.каркас, @@ -73,6 +80,7 @@ ступенька1: { родитель: мир.платформы, тип: "платформа", + после: платформаПрыжков, x: 125, y: 980, texture: "основа", @@ -81,6 +89,30 @@ scaleX: 5, visible: true, }, + ступенька2: { + родитель: мир.платформы, + тип: "платформа", + после: платформаПрыжков, + x: 125, + y: 865, + texture: "основа", + originX: 0, + originY: 0, + scaleX: 5, + visible: true, + }, + ступенька3: { + родитель: мир.платформы, + тип: "платформа", + после: платформаПрыжков, + x: 125, + y: 750, + texture: "основа", + originX: 0, + originY: 0, + scaleX: 5, + visible: true, + }, }; };