diff --git a/игра/111.изба.js b/игра/111.изба.js index 1f37d5d..1583e5b 100644 --- a/игра/111.изба.js +++ b/игра/111.изба.js @@ -318,37 +318,45 @@ СоздатьСтрелы = мир => { мир.пфСтрел = мир.сцена.physics.add.staticGroup(); - // Куча стрел. var куча = мир.пфСтрел.create(1270, 405, "основа").setOrigin(0, 0); куча.setScale(25, 2).refreshBody(); куча.body.checkCollision.down = false; куча.setVisible(false); + + var лук = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0); + лук.body.checkCollision.down = false; + лук.setVisible(false); + + var пуск = мир.пфСтрел.create(1270, 160, "основа").setOrigin(0, 0); + пуск.setVisible(false); + + var окно = мир.пфСтрел.create(1830, 200, "основа").setOrigin(0, 0); + окно.setScale(1, 20).refreshBody(); + окно.setVisible(false); + + // Определение прыжка по стрелам. мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) { if (мир.колобок.body.touching.down) { мир.состояниеКолобка.прыжокПоСтрелам = true; } }); + + мир.стрелаЗаряжена = false; мир.пускСтрелы = false; - // Стрела лука. - мир.стрелаЛука = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0); - мир.стрелаЛука.setScale(0.5, 0.5).refreshBody(); - мир.стрелаЛука.depth = 5; - // Учитываем платформы. - мир.сцена.physics.add.collider(мир.стрелаЛука, мир.каркас); - мир.сцена.physics.add.collider(мир.стрелаЛука, мир.платформы); + мир.стрела = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0); + мир.стрела.setScale(0.5, 0.5).refreshBody(); + мир.стрела.depth = 5; - // Платформа для стрелы лука, чтобы оставаться в луке. - var пфЛука = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0); - пфЛука.body.checkCollision.down = false; - пфЛука.setVisible(false); - var стЛука = мир.сцена.physics.add.collider(мир.стрелаЛука, пфЛука); + мир.сцена.physics.add.collider(мир.стрела, мир.каркас); + мир.сцена.physics.add.collider(мир.стрела, мир.платформы); // Определение заряда стрелы. - стЛука.collideCallback = function заряд(a, b) { - if (мир.стрелаЛука.body.touching.down && !мир.стрелаЗаряжена) + var стЛук = мир.сцена.physics.add.collider(мир.стрела, лук); + стЛук.collideCallback = function заряд(a, b) { + if (мир.стрела.body.touching.down && !мир.стрелаЗаряжена) { мир.стрелаЗаряжена = true; мир.уведомить("стрела заряжена"); @@ -356,24 +364,18 @@ }; // Определение пуска стрелы. - var пфПуска = мир.пфСтрел.create(1270, 160, "основа").setOrigin(0, 0); - пфПуска.setVisible(false); - var стПуска = мир.сцена.physics.add.collider(пфПуска, мир.колобок); - стПуска.collideCallback = function(a, b) { + var стПуск = мир.сцена.physics.add.collider(пуск, мир.колобок); + стПуск.collideCallback = function(a, b) { if (мир.стрелаЗаряжена && !мир.пускСтрелы) { мир.пускСтрелы = true; мир.уведомить("пуск стрелы"); } }; - стПуска.overlapOnly = true; - - // Платформа для стрелы у окна, чтобы стрела не летела дальше. - var пфОкна = мир.пфСтрел.create(1830, 200, "основа").setOrigin(0, 0); - пфОкна.setScale(1, 20).refreshBody(); - var стОкна = мир.сцена.physics.add.collider(мир.стрелаЛука, пфОкна); - пфОкна.setVisible(false); - стОкна.collideCallback = function(a, b) { + стПуск.overlapOnly = true; + + var стОкно = мир.сцена.physics.add.collider(мир.стрела, окно); + стОкно.collideCallback = function(a, b) { if (мир.стрелаЗаряжена && мир.пускСтрелы) { мир.стрелаЗаряжена = false; @@ -411,12 +413,12 @@ ПодкидыватьСтрелуКЛуку = мир => { - if (!мир.стрелаЛука.body.touching.down || мир.стрелаЗаряжена) + if (!мир.стрела.body.touching.down || мир.стрелаЗаряжена) { return; } var скорость = мир.состояниеКолобка.скоростьПадения * 0.9; - мир.стрелаЛука.setVelocityY(-скорость); + мир.стрела.setVelocityY(-скорость); }; @@ -443,7 +445,7 @@ ПуститьСтрелу = мир => { - мир.стрелаЛука.setVelocityX(1200); + мир.стрела.setVelocityX(1200); };