@@ -2,7 +2,7 @@ | |||
<html> | |||
<head> | |||
<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> | |||
<style> | |||
html, body { | |||
@@ -13,7 +13,7 @@ | |||
мир.каркас = мир.сцена.physics.add.staticGroup(); | |||
мир.платформы = мир.сцена.physics.add.staticGroup(); | |||
мир.вещи = мир.сцена.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(мир.враги, мир.платформы); | |||
}; | |||
@@ -15,6 +15,8 @@ | |||
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; | |||
камера.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(мир.колобок, мир.платформы); | |||
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги); | |||
@@ -103,7 +112,9 @@ | |||
if (мир.управление.прыжок && мир.колобок.body.touching.down) | |||
{ | |||
мир.колобок.setVelocityY(-570); | |||
var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести; | |||
мир.колобок.setVelocityY(скорость); | |||
мир.сцена.sound.play("прыжок"); | |||
} | |||
}; | |||
@@ -111,7 +122,8 @@ | |||
// // // // | |||
АнимироватьКолобка = мир => { | |||
АнимироватьКолобка = мир => | |||
{ | |||
var есть = ""; | |||
if (мир.колобок.anims.currentAnim) | |||
{ | |||
@@ -139,29 +151,115 @@ | |||
// // // // | |||
ОтключитьСтолкновениеСПлатформами = мир => { | |||
ОтключитьСтолкновениеСПлатформамиИВещами = мир => | |||
{ | |||
мир.столкновениеПлатформы.active = false; | |||
мир.столкновениеВещи.active = false; | |||
}; | |||
// // // // | |||
ВключитьСтолкновениеСПлатформами = мир => { | |||
ВключитьСтолкновениеСПлатформамиИВещами = мир => | |||
{ | |||
мир.столкновениеПлатформы.active = true; | |||
мир.столкновениеВещи.active = true; | |||
}; | |||
// // // // | |||
ОстановитьПередвижениеВещей = мир => { | |||
ОстановитьПередвижениеВещей = мир => | |||
{ | |||
var вещи = мир.вещи.getChildren(); | |||
for (var н in вещи) | |||
{ | |||
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("линия", "ресурсы/отладка/линия_вертикальная.png"); | |||
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg"); | |||
мир.сцена.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); | |||
мир.сцена.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/ |