diff --git a/игра/110.колобок.js b/игра/110.колобок.js index 7e7e742..7962773 100644 --- a/игра/110.колобок.js +++ b/игра/110.колобок.js @@ -26,7 +26,7 @@ СоздатьКолобка = мир => { var x = 100; - //var x = 1300; +var x = 1300; мир.колобок = мир.сцена.physics.add.sprite(x, 500, "колобок"); мир.колобок.depth = 10; мир.колобок.body.setSize(50); @@ -228,7 +228,7 @@ НачатьМиганиеКолобка = мир => { var конец = new Date(); - конец.setSeconds(конец.getSeconds() + 8); + конец.setSeconds(конец.getSeconds() + 6); мир.состояниеКолобка.мигание.окончание = конец; var звук = мир.сцена.sound.get("повреждение"); @@ -341,8 +341,8 @@ колобок закончил прыжок вывести окончание прыжка в консоль начали мигать колобка - отключить столкновение с платформами и вещами - уменьшить прыгучесть колобка +# отключить столкновение с платформами и вещами +# уменьшить прыгучесть колобка закончили мигать колобка включить столкновение с платформами и вещами восстановить прыгучесть колобка diff --git a/игра/111.изба.js b/игра/111.изба.js index 9234fa9..19d3b12 100644 --- a/игра/111.изба.js +++ b/игра/111.изба.js @@ -9,6 +9,8 @@ { мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3"); мир.сцена.load.audio("звук-зарядки", "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav"); + мир.сцена.load.audio("пуск-стрелы", "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3"); + мир.сцена.load.audio("удар-стрелы", "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3"); мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png"); @@ -213,7 +215,7 @@ { x: 1003, y: 250, - скорость: 55, + скорость: 40, низ: 400, верх: 200, }, @@ -314,6 +316,7 @@ СоздатьСтрелы = мир => { мир.стрелаЗаряжена = false; + мир.пускСтрелы = false; // Кучка стрел. var группаСтрел = мир.сцена.physics.add.staticGroup(); @@ -323,13 +326,15 @@ стрелы.setVisible(false); var столкновение = мир.сцена.physics.add.collider(мир.колобок, стрелы); столкновение.collideCallback = function(a, b) { - мир.состояниеКолобка.прыжокПоСтрелам = true; + if (мир.колобок.body.touching.down) { + мир.состояниеКолобка.прыжокПоСтрелам = true; + } }; - // Стрела в луку. + // Стрела к луку. мир.стрелаКЛуку = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0); мир.стрелаКЛуку.setScale(0.5, 0.5).refreshBody(); - мир.стрелаКЛуку.depth = 15; + мир.стрелаКЛуку.depth = 5; // Учитываем платформы. мир.сцена.physics.add.collider(мир.стрелаКЛуку, мир.каркас); @@ -349,7 +354,32 @@ мир.стрелаЗаряжена = true; мир.уведомить("стрела заряжена"); } - } + }; + + // Определение пересечения с заряженной стрелой. + 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) { + if (мир.стрелаЗаряжена && мир.пускСтрелы) + { + мир.стрелаЗаряжена = false; + мир.пускСтрелы = false; + мир.уведомить("удар стрелы об окно"); + } + }; }; @@ -398,6 +428,33 @@ }; +// // // // + + +ВоспроизвестиЗвукПускаСтрелы = мир => +{ + мир.сцена.sound.play("пуск-стрелы"); +}; + + +// // // // + + +ПуститьСтрелу = мир => +{ + мир.стрелаКЛуку.setVelocityX(1200); +}; + + +// // // // + + +ВоспроизвестиЗвукУдараСтрелыОбОкно = мир => +{ + мир.сцена.sound.play("удар-стрелы"); +}; + + /* * * Последовательность @@ -428,5 +485,10 @@ подкидывать стрелу к луку стрела заряжена воспроизвести звук зарядки стрелы +пуск стрелы + воспроизвести звук пуска стрелы + пустить стрелу +удар стрелы об окно + воспроизвести звук удара стрелы об окно `);