@@ -2,7 +2,7 @@ | |||||
<html> | <html> | ||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | ||||
<title>К 0.3.0</title> | |||||
<title>К 0.4.0</title> | |||||
<script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script> | <script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script> | ||||
<style> | <style> | ||||
html, body { | html, body { | ||||
@@ -13,7 +13,7 @@ | |||||
мир.каркас = мир.сцена.physics.add.staticGroup(); | мир.каркас = мир.сцена.physics.add.staticGroup(); | ||||
мир.платформы = мир.сцена.physics.add.staticGroup(); | мир.платформы = мир.сцена.physics.add.staticGroup(); | ||||
мир.вещи = мир.сцена.add.group(); | мир.вещи = мир.сцена.add.group(); | ||||
мир.враги = мир.сцена.add.group(); | |||||
мир.враги = мир.сцена.physics.add.group({ allowGravity: false }); | |||||
}; | }; | ||||
@@ -24,8 +24,8 @@ | |||||
{ | { | ||||
мир.сцена.physics.add.collider(мир.вещи, мир.каркас); | мир.сцена.physics.add.collider(мир.вещи, мир.каркас); | ||||
мир.сцена.physics.add.collider(мир.вещи, мир.платформы); | мир.сцена.physics.add.collider(мир.вещи, мир.платформы); | ||||
мир.сцена.physics.add.collider(мир.враги, мир.каркас); | |||||
мир.сцена.physics.add.collider(мир.враги, мир.платформы); | |||||
//мир.сцена.physics.add.collider(мир.враги, мир.каркас); | |||||
//мир.сцена.physics.add.collider(мир.враги, мир.платформы); | |||||
}; | }; | ||||
@@ -15,6 +15,8 @@ | |||||
frameHeight: 94, | frameHeight: 94, | ||||
} | } | ||||
); | ); | ||||
мир.сцена.load.audio("прыжок", "ресурсы/звуки/331381__qubodup__public-domain-jump-sound.wav"); | |||||
мир.сцена.load.audio("повреждение", "ресурсы/звуки/437650__dersuperanton__getting-hit-damage-scream.wav"); | |||||
}; | }; | ||||
@@ -32,6 +34,13 @@ | |||||
// Следить за колобком камерой. | // Следить за колобком камерой. | ||||
const камера = мир.сцена.cameras.main; | const камера = мир.сцена.cameras.main; | ||||
камера.startFollow(мир.колобок, false, 0.1, 0.1); | камера.startFollow(мир.колобок, false, 0.1, 0.1); | ||||
мир.состояниеКолобка = { | |||||
мигать: false, | |||||
мигание: { }, | |||||
прыгучесть: -570, | |||||
коэффициентПрыгучести: 1, | |||||
}; | |||||
}; | }; | ||||
@@ -66,7 +75,7 @@ | |||||
НастроитьСтолкновениеКолобка = мир => | НастроитьСтолкновениеКолобка = мир => | ||||
{ | { | ||||
мир.сцена.physics.add.collider(мир.колобок, мир.каркас); | мир.сцена.physics.add.collider(мир.колобок, мир.каркас); | ||||
мир.сцена.physics.add.collider(мир.колобок, мир.вещи); | |||||
мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи); | |||||
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы); | мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы); | ||||
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги); | var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги); | ||||
@@ -103,7 +112,9 @@ | |||||
if (мир.управление.прыжок && мир.колобок.body.touching.down) | if (мир.управление.прыжок && мир.колобок.body.touching.down) | ||||
{ | { | ||||
мир.колобок.setVelocityY(-570); | |||||
var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести; | |||||
мир.колобок.setVelocityY(скорость); | |||||
мир.сцена.sound.play("прыжок"); | |||||
} | } | ||||
}; | }; | ||||
@@ -111,7 +122,8 @@ | |||||
// // // // | // // // // | ||||
АнимироватьКолобка = мир => { | |||||
АнимироватьКолобка = мир => | |||||
{ | |||||
var есть = ""; | var есть = ""; | ||||
if (мир.колобок.anims.currentAnim) | if (мир.колобок.anims.currentAnim) | ||||
{ | { | ||||
@@ -139,29 +151,115 @@ | |||||
// // // // | // // // // | ||||
ОтключитьСтолкновениеСПлатформами = мир => { | |||||
ОтключитьСтолкновениеСПлатформамиИВещами = мир => | |||||
{ | |||||
мир.столкновениеПлатформы.active = false; | мир.столкновениеПлатформы.active = false; | ||||
мир.столкновениеВещи.active = false; | |||||
}; | }; | ||||
// // // // | // // // // | ||||
ВключитьСтолкновениеСПлатформами = мир => { | |||||
ВключитьСтолкновениеСПлатформамиИВещами = мир => | |||||
{ | |||||
мир.столкновениеПлатформы.active = true; | мир.столкновениеПлатформы.active = true; | ||||
мир.столкновениеВещи.active = true; | |||||
}; | }; | ||||
// // // // | // // // // | ||||
ОстановитьПередвижениеВещей = мир => { | |||||
ОстановитьПередвижениеВещей = мир => | |||||
{ | |||||
var вещи = мир.вещи.getChildren(); | var вещи = мир.вещи.getChildren(); | ||||
for (var н in вещи) | for (var н in вещи) | ||||
{ | { | ||||
var вещь = вещи[н]; | var вещь = вещи[н]; | ||||
вещь.body.stop(); | |||||
if (вещь.body.touching.down) | |||||
{ | |||||
вещь.body.stop(); | |||||
} | |||||
} | |||||
}; | |||||
// // // // | |||||
НачатьМиганиеКолобка = мир => | |||||
{ | |||||
var конец = new Date(); | |||||
конец.setSeconds(конец.getSeconds() + 8); | |||||
мир.состояниеКолобка.мигание.окончание = конец; | |||||
var звук = мир.сцена.sound.get("повреждение"); | |||||
if (!звук || !звук.isPlaying) | |||||
{ | |||||
мир.сцена.sound.play("повреждение"); | |||||
} | |||||
if (мир.состояниеКолобка.мигать) | |||||
{ | |||||
return; | |||||
} | } | ||||
мир.состояниеКолобка.мигать = true; | |||||
мир.состояниеКолобка.мигание = { | |||||
шаг: 0.1, | |||||
цель: 0, | |||||
}; | |||||
мир.уведомить("начали мигать колобка"); | |||||
}; | |||||
// // // // | |||||
МигатьКолобка = мир => | |||||
{ | |||||
if (!мир.состояниеКолобка.мигать) | |||||
{ | |||||
return; | |||||
} | |||||
var м = мир.состояниеКолобка.мигание; | |||||
var сейчас = new Date(); | |||||
if (м.окончание - сейчас < 0) | |||||
{ | |||||
мир.состояниеКолобка.мигать = false; | |||||
мир.колобок.alpha = 1; | |||||
мир.уведомить("закончили мигать колобка"); | |||||
return; | |||||
} | |||||
var к = (м.цель == 1) ? 1 : -1; | |||||
мир.колобок.alpha += к * м.шаг; | |||||
if ((мир.колобок.alpha <= 0) || (мир.колобок.alpha >= 1)) | |||||
{ | |||||
м.цель = к * -1; | |||||
} | |||||
}; | |||||
// // // // | |||||
УменьшитьПрыгучестьКолобка = мир => | |||||
{ | |||||
мир.состояниеКолобка.коэффициентПрыгучести = 0.6; | |||||
}; | |||||
// // // // | |||||
ВосстановитьПрыгучестьКолобка = мир => | |||||
{ | |||||
мир.состояниеКолобка.коэффициентПрыгучести = 1; | |||||
}; | }; | ||||
@@ -179,13 +277,18 @@ | |||||
создать колобка | создать колобка | ||||
создать анимации колобка | создать анимации колобка | ||||
настроить столкновение колобка | настроить столкновение колобка | ||||
изменили управление | |||||
переместить колобка | |||||
столкновение с врагом | столкновение с врагом | ||||
отключить столкновение с платформами | |||||
начать мигание колобка | |||||
обновить сцену | обновить сцену | ||||
переместить колобка | |||||
анимировать колобка | анимировать колобка | ||||
изменили анимацию колобка | |||||
мигать колобка | |||||
остановить передвижение вещей | остановить передвижение вещей | ||||
начали мигать колобка | |||||
отключить столкновение с платформами и вещами | |||||
уменьшить прыгучесть колобка | |||||
закончили мигать колобка | |||||
включить столкновение с платформами и вещами | |||||
восстановить прыгучесть колобка | |||||
`); | `); | ||||
@@ -7,9 +7,13 @@ | |||||
ЗагрузитьРесурсыИзбы = мир => | ЗагрузитьРесурсыИзбы = мир => | ||||
{ | { | ||||
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg"); | |||||
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); | мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); | ||||
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png"); | |||||
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg"); | |||||
мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png"); | мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png"); | ||||
мир.сцена.load.image("паук", "ресурсы/животные/паук.png"); | |||||
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); | |||||
мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3"); | |||||
}; | }; | ||||
@@ -19,6 +23,7 @@ | |||||
СоздатьИзбу = мир => | СоздатьИзбу = мир => | ||||
{ | { | ||||
мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0); | мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0); | ||||
мир.сцена.sound.play("звук-избы", { loop: true }); | |||||
}; | }; | ||||
@@ -152,22 +157,129 @@ | |||||
// // // // | // // // // | ||||
СоздатьВрагов = мир => { | |||||
var враг = мир.сцена.physics.add.sprite(750, 100, "основа"); | |||||
враг.setScale(5, 5).refreshBody(); | |||||
враг.depth = 10; | |||||
мир.враги.add(враг); | |||||
СоздатьВещи = мир => | |||||
{ | |||||
var молоко = мир.сцена.physics.add.sprite(830, 430, "молоко"); | |||||
молоко.setScale(0.5, 0.5).refreshBody(); | |||||
молоко.depth = 5; | |||||
мир.вещи.add(молоко); | |||||
}; | }; | ||||
// // // // | // // // // | ||||
СоздатьВещи = мир => { | |||||
var молоко = мир.сцена.physics.add.sprite(750, 400, "молоко"); | |||||
молоко.setScale(0.5, 0.5).refreshBody(); | |||||
молоко.depth = 10; | |||||
мир.вещи.add(молоко); | |||||
СоздатьПауков = мир => | |||||
{ | |||||
мир.настройкиПауков = [ | |||||
{ | |||||
x: 620, | |||||
y: 345, | |||||
скорость: 50, | |||||
}, | |||||
{ | |||||
x: 740, | |||||
y: 445, | |||||
скорость: 65, | |||||
}, | |||||
{ | |||||
x: 830, | |||||
y: 375, | |||||
скорость: 80, | |||||
}, | |||||
{ | |||||
x: 930, | |||||
y: 500, | |||||
скорость: 70, | |||||
}, | |||||
]; | |||||
мир.пауки = []; | |||||
мир.нитиПауков = []; | |||||
for (var номер in мир.настройкиПауков) | |||||
{ | |||||
var настройки = мир.настройкиПауков[номер]; | |||||
var паук = мир.враги.create(настройки.x, настройки.y, "паук"); | |||||
паук.body.setVelocityY(настройки.скорость); | |||||
паук.depth = 10; | |||||
мир.пауки.push(паук); | |||||
var нить = мир.сцена.add.image(настройки.x - 1, 245, "линия").setOrigin(0, 0); | |||||
нить.depth = паук.depth; | |||||
мир.нитиПауков.push(нить); | |||||
} | |||||
}; | |||||
// // // // | |||||
АнимироватьПауков = мир => | |||||
{ | |||||
for (var номер in мир.пауки) | |||||
{ | |||||
var паук = мир.пауки[номер]; | |||||
var нить = мир.нитиПауков[номер]; | |||||
var скорость = мир.настройкиПауков[номер].скорость; | |||||
нить.displayHeight = паук.y - нить.y - 5; | |||||
if (паук.y > 550) | |||||
{ | |||||
паук.setVelocityY(-скорость); | |||||
} else if (паук.y < 270) | |||||
{ | |||||
паук.setVelocityY(скорость); | |||||
} | |||||
} | |||||
}; | |||||
// // // // | |||||
СоздатьМышей = мир => | |||||
{ | |||||
мир.настройкиМышей= [ | |||||
{ | |||||
x: 350, | |||||
y: 575, | |||||
скорость: 290, | |||||
}, | |||||
{ | |||||
x: 740, | |||||
y: 575, | |||||
скорость: 375, | |||||
}, | |||||
]; | |||||
мир.мыши = []; | |||||
for (var номер in мир.настройкиМышей) | |||||
{ | |||||
var настройки = мир.настройкиМышей[номер]; | |||||
var мышь = мир.враги.create(настройки.x, настройки.y, "мышь"); | |||||
мышь.body.setVelocityX(настройки.скорость); | |||||
мышь.depth = 10; | |||||
мышь.flipX = true; | |||||
мир.мыши.push(мышь); | |||||
} | |||||
}; | |||||
// // // // | |||||
АнимироватьМышей = мир => | |||||
{ | |||||
for (var номер in мир.мыши) | |||||
{ | |||||
var мышь= мир.мыши[номер]; | |||||
var скорость = мир.настройкиМышей[номер].скорость; | |||||
if (мышь.x > 1950) | |||||
{ | |||||
мышь.setVelocityX(-скорость); | |||||
мышь.flipX = false; | |||||
} else if (мышь.x < 50) | |||||
{ | |||||
мышь.setVelocityX(скорость); | |||||
мышь.flipX = true; | |||||
} | |||||
} | |||||
}; | }; | ||||
@@ -186,7 +298,11 @@ | |||||
создать полы и стены каркаса | создать полы и стены каркаса | ||||
создать платформы | создать платформы | ||||
позволить платформам пропускать прыжки | позволить платформам пропускать прыжки | ||||
создать врагов | |||||
создать вещи | создать вещи | ||||
создать пауков | |||||
создать мышей | |||||
обновить сцену | |||||
анимировать пауков | |||||
анимировать мышей | |||||
`); | `); | ||||
@@ -0,0 +1,7 @@ | |||||
* https://freesound.org/people/DDmyzik/sounds/555803/ | |||||
* https://freesound.org/people/Setuniman/sounds/387922/ | |||||
* https://freesound.org/people/qubodup/sounds/331381/ | |||||
* https://freesound.org/people/davethetech/sounds/360432/ | |||||
* https://freesound.org/people/omerbhatti34/sounds/521552/ | |||||
* https://freesound.org/people/Czarcazas/sounds/330800/ | |||||
* https://freesound.org/people/Kneeling/sounds/448004/ |