|
|
@@ -9,6 +9,9 @@ |
|
|
|
{ |
|
|
|
мир.сцена.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.audio("выломали-окно", "ресурсы/звуки/448004__kneeling__break-window.mp3"); |
|
|
|
|
|
|
|
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); |
|
|
|
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png"); |
|
|
@@ -19,6 +22,8 @@ |
|
|
|
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); |
|
|
|
мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png"); |
|
|
|
мир.сцена.load.image("стрела", "ресурсы/вещи/стрела.png"); |
|
|
|
мир.сцена.load.image("окно-разбито", "ресурсы/вещи/окно_разбитая-часть.png"); |
|
|
|
мир.сцена.load.image("окно-выломано", "ресурсы/вещи/окно_дыра.png"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -30,6 +35,14 @@ |
|
|
|
мир.сцена.sound.play("звук-избы", { loop: true }); |
|
|
|
|
|
|
|
мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0); |
|
|
|
|
|
|
|
мир.разбитоеОкно = мир.сцена.add.image(1660, 183, "окно-разбито"); |
|
|
|
мир.разбитоеОкно.setOrigin(0, 0).setScale(0.75, 0.75); |
|
|
|
мир.разбитоеОкно.setVisible(false); |
|
|
|
|
|
|
|
мир.выломанноеОкно = мир.сцена.add.image(1660, 183, "окно-выломано"); |
|
|
|
мир.выломанноеОкно.setOrigin(0, 0).setScale(0.75, 0.75); |
|
|
|
мир.выломанноеОкно.setVisible(false); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -213,7 +226,7 @@ |
|
|
|
{ |
|
|
|
x: 1003, |
|
|
|
y: 250, |
|
|
|
скорость: 55, |
|
|
|
скорость: 40, |
|
|
|
низ: 400, |
|
|
|
верх: 200, |
|
|
|
}, |
|
|
@@ -313,43 +326,84 @@ |
|
|
|
|
|
|
|
СоздатьСтрелы = мир => |
|
|
|
{ |
|
|
|
мир.стрелаЗаряжена = false; |
|
|
|
мир.пфСтрел = мир.сцена.physics.add.staticGroup(); |
|
|
|
var куча = мир.пфСтрел.create(1270, 405, "основа").setOrigin(0, 0); |
|
|
|
куча.setScale(25, 2).refreshBody(); |
|
|
|
куча.body.checkCollision.down = false; |
|
|
|
куча.setVisible(false); |
|
|
|
|
|
|
|
мир.пфЛук = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0); |
|
|
|
мир.пфЛук.body.checkCollision.down = false; |
|
|
|
мир.пфЛук.setVisible(false); |
|
|
|
|
|
|
|
var пуск = мир.пфСтрел.create(1270, 160, "основа").setOrigin(0, 0); |
|
|
|
пуск.setVisible(false); |
|
|
|
|
|
|
|
мир.пфОкно = мир.пфСтрел.create(1830, 200, "основа").setOrigin(0, 0); |
|
|
|
мир.пфОкно.setScale(1, 20).refreshBody(); |
|
|
|
мир.пфОкно.setVisible(false); |
|
|
|
|
|
|
|
// Определение прыжка по стрелам. |
|
|
|
мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) { |
|
|
|
if (мир.колобок.body.touching.down) { |
|
|
|
мир.состояниеКолобка.прыжокПоСтрелам = true; |
|
|
|
console.debug("прыжок по стрелам"); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
// Кучка стрел. |
|
|
|
var группаСтрел = мир.сцена.physics.add.staticGroup(); |
|
|
|
var стрелы = группаСтрел.create(1270, 405, "основа").setOrigin(0, 0); |
|
|
|
стрелы.setScale(25, 2).refreshBody(); |
|
|
|
стрелы.body.checkCollision.down = false; |
|
|
|
стрелы.setVisible(false); |
|
|
|
var столкновение = мир.сцена.physics.add.collider(мир.колобок, стрелы); |
|
|
|
столкновение.collideCallback = function(a, b) { |
|
|
|
мир.состояниеКолобка.прыжокПоСтрелам = true; |
|
|
|
// Определение пуска стрелы. |
|
|
|
var стПуск = мир.сцена.physics.add.collider(мир.колобок, пуск); |
|
|
|
стПуск.collideCallback = function(a, b) { |
|
|
|
if (мир.стрелаЗаряжена && !мир.пускСтрелы) |
|
|
|
{ |
|
|
|
мир.пускСтрелы = true; |
|
|
|
мир.уведомить("пуск стрелы"); |
|
|
|
console.debug("пуск стрелы"); |
|
|
|
} |
|
|
|
}; |
|
|
|
стПуск.overlapOnly = true; |
|
|
|
}; |
|
|
|
|
|
|
|
// Стрела в луку. |
|
|
|
мир.стрелаКЛуку = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0); |
|
|
|
мир.стрелаКЛуку.setScale(0.5, 0.5).refreshBody(); |
|
|
|
мир.стрелаКЛуку.depth = 15; |
|
|
|
|
|
|
|
// Учитываем платформы. |
|
|
|
мир.сцена.physics.add.collider(мир.стрелаКЛуку, мир.каркас); |
|
|
|
мир.сцена.physics.add.collider(мир.стрелаКЛуку, мир.платформы); |
|
|
|
// // // // |
|
|
|
|
|
|
|
// Платформа для стрелы у лука, чтобы стрела оставалась в луке. |
|
|
|
var платформы = мир.сцена.physics.add.staticGroup(); |
|
|
|
var платформаЛука = платформы.create(1280, 200, "основа").setOrigin(0, 0); |
|
|
|
платформаЛука.body.checkCollision.down = false; |
|
|
|
var столкновениеЛука = мир.сцена.physics.add.collider(мир.стрелаКЛуку, платформаЛука); |
|
|
|
платформаЛука.setVisible(false); |
|
|
|
|
|
|
|
СоздатьСтрелу = мир => |
|
|
|
{ |
|
|
|
мир.стрелаЗаряжена = false; |
|
|
|
мир.пускСтрелы = false; |
|
|
|
|
|
|
|
мир.стрела = мир.сцена.physics.add.sprite(1250, 397, "стрела").setOrigin(0, 0); |
|
|
|
мир.стрела.setScale(0.5, 0.5).refreshBody(); |
|
|
|
мир.стрела.depth = 5; |
|
|
|
|
|
|
|
мир.сцена.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; |
|
|
|
мир.уведомить("стрела заряжена"); |
|
|
|
console.debug("стрела заряжена"); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// Определение столкновения с окном. |
|
|
|
var стОкно = мир.сцена.physics.add.collider(мир.стрела, мир.пфОкно); |
|
|
|
стОкно.collideCallback = function(a, b) { |
|
|
|
if (мир.стрелаЗаряжена && мир.пускСтрелы) |
|
|
|
{ |
|
|
|
мир.стрелаЗаряжена = false; |
|
|
|
мир.пускСтрелы = false; |
|
|
|
мир.уведомить("удар стрелы об окно"); |
|
|
|
console.debug("удар стрелы об окно"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
console.debug("стрела.x", мир.стрела.x); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -380,12 +434,12 @@ |
|
|
|
|
|
|
|
ПодкидыватьСтрелуКЛуку = мир => |
|
|
|
{ |
|
|
|
if (!мир.стрелаКЛуку.body.touching.down || мир.стрелаЗаряжена) |
|
|
|
if (!мир.стрела.body.touching.down || мир.стрелаЗаряжена) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
var скорость = мир.состояниеКолобка.скоростьПадения * 0.9; |
|
|
|
мир.стрелаКЛуку.setVelocityY(-скорость); |
|
|
|
мир.стрела.setVelocityY(-скорость); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -398,6 +452,93 @@ |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВоспроизвестиЗвукПускаСтрелы = мир => |
|
|
|
{ |
|
|
|
мир.сцена.sound.play("пуск-стрелы"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПуститьСтрелу = мир => |
|
|
|
{ |
|
|
|
мир.стрела.setVelocityX(1200); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВоспроизвестиЗвукУдараСтрелыОбОкно = мир => |
|
|
|
{ |
|
|
|
мир.сцена.sound.play("удар-стрелы"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ОтобразитьРазбитоеОкно = мир => |
|
|
|
{ |
|
|
|
мир.разбитоеОкно.setVisible(true); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ОтобразитьВыломанноеОкно = мир => |
|
|
|
{ |
|
|
|
мир.разбитоеОкно.setVisible(false); |
|
|
|
мир.выломанноеОкно.setVisible(true); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
УведомитьСразуПослеУдара = мир => |
|
|
|
{ |
|
|
|
setTimeout( |
|
|
|
function() { |
|
|
|
мир.уведомить("сразу после удара"); |
|
|
|
}, |
|
|
|
1 |
|
|
|
); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ПодсчитатьУдарыСтрелыОбОкно = мир => |
|
|
|
{ |
|
|
|
if (!мир.ударовСтрелыОбОкно) |
|
|
|
{ |
|
|
|
мир.ударовСтрелыОбОкно = 1; |
|
|
|
мир.уведомить("первый удар стрелы об окно"); |
|
|
|
} |
|
|
|
else if (мир.ударовСтрелыОбОкно == 1) |
|
|
|
{ |
|
|
|
мир.ударовСтрелыОбОкно = 2; |
|
|
|
мир.уведомить("второй удар стрелы об окно"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
ВоспроизвестиЗвукВыломанногоОкна = мир => |
|
|
|
{ |
|
|
|
мир.сцена.sound.play("выломали-окно"); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* |
|
|
|
* Последовательность |
|
|
@@ -417,6 +558,7 @@ |
|
|
|
создать пауков |
|
|
|
создать мышей |
|
|
|
создать стрелы |
|
|
|
создать стрелу |
|
|
|
обновить сцену |
|
|
|
анимировать пауков |
|
|
|
анимировать мышей |
|
|
@@ -428,5 +570,19 @@ |
|
|
|
подкидывать стрелу к луку |
|
|
|
стрела заряжена |
|
|
|
воспроизвести звук зарядки стрелы |
|
|
|
пуск стрелы |
|
|
|
воспроизвести звук пуска стрелы |
|
|
|
пустить стрелу |
|
|
|
удар стрелы об окно |
|
|
|
воспроизвести звук удара стрелы об окно |
|
|
|
уведомить сразу после удара |
|
|
|
подсчитать удары стрелы об окно |
|
|
|
первый удар стрелы об окно |
|
|
|
отобразить разбитое окно |
|
|
|
второй удар стрелы об окно |
|
|
|
отобразить выломанное окно |
|
|
|
воспроизвести звук выломанного окна |
|
|
|
сразу после удара |
|
|
|
создать стрелу |
|
|
|
`); |
|
|
|
|