@@ -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.5.0</title> | |||||
<title>К 0.6.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 { | ||||
@@ -24,8 +24,6 @@ | |||||
{ | { | ||||
мир.сцена.physics.add.collider(мир.вещи, мир.каркас); | мир.сцена.physics.add.collider(мир.вещи, мир.каркас); | ||||
мир.сцена.physics.add.collider(мир.вещи, мир.платформы); | мир.сцена.physics.add.collider(мир.вещи, мир.платформы); | ||||
//мир.сцена.physics.add.collider(мир.враги, мир.каркас); | |||||
//мир.сцена.physics.add.collider(мир.враги, мир.платформы); | |||||
}; | }; | ||||
@@ -25,12 +25,13 @@ | |||||
СоздатьКолобка = мир => | СоздатьКолобка = мир => | ||||
{ | { | ||||
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок"); | |||||
//мир.колобок = мир.сцена.physics.add.sprite(1000, 500, "колобок"); | |||||
var x = 100; | |||||
var x = 1300; | |||||
мир.колобок = мир.сцена.physics.add.sprite(x, 500, "колобок"); | |||||
мир.колобок.depth = 10; | мир.колобок.depth = 10; | ||||
мир.колобок.body.setSize(50); | мир.колобок.body.setSize(50); | ||||
// Портит анимацию прыжков! | // Портит анимацию прыжков! | ||||
//мир.колобок.setBounceY(0.1); | |||||
// мир.колобок.setBounceY(0.1); | |||||
// Следить за колобком камерой. | // Следить за колобком камерой. | ||||
const камера = мир.сцена.cameras.main; | const камера = мир.сцена.cameras.main; | ||||
@@ -41,6 +42,8 @@ | |||||
мигание: { }, | мигание: { }, | ||||
прыгучесть: -570, | прыгучесть: -570, | ||||
коэффициентПрыгучести: 1, | коэффициентПрыгучести: 1, | ||||
прыжок: false, | |||||
скоростьПадения: 0, | |||||
}; | }; | ||||
}; | }; | ||||
@@ -111,11 +114,12 @@ | |||||
} | } | ||||
мир.колобок.setVelocityX(x); | мир.колобок.setVelocityX(x); | ||||
if (мир.управление.прыжок && мир.колобок.body.touching.down) | |||||
if (мир.управление.прыжок && !мир.состояниеКолобка.прыжок) | |||||
{ | { | ||||
мир.состояниеКолобка.прыжок = true; | |||||
var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести; | var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести; | ||||
мир.колобок.setVelocityY(скорость); | мир.колобок.setVelocityY(скорость); | ||||
мир.сцена.sound.play("прыжок"); | |||||
мир.уведомить("колобок начал прыжок"); | |||||
} | } | ||||
}; | }; | ||||
@@ -123,6 +127,38 @@ | |||||
// // // // | // // // // | ||||
ВоспроизвестиЗвукПрыжка = мир => | |||||
{ | |||||
мир.сцена.sound.play("прыжок"); | |||||
}; | |||||
// // // // | |||||
ОпределитьОкончаниеПрыжкаКолобка = мир => | |||||
{ | |||||
if (!мир.состояниеКолобка.прыжок) | |||||
{ | |||||
return; | |||||
} | |||||
var скоростьПадения = мир.колобок.body.velocity.y; | |||||
if ( | |||||
(мир.состояниеКолобка.скоростьПадения > 40) && | |||||
(скоростьПадения == 0) && | |||||
мир.колобок.body.touching.down | |||||
) { | |||||
мир.состояниеКолобка.прыжок = false; | |||||
мир.уведомить("колобок закончил прыжок"); | |||||
} | |||||
мир.состояниеКолобка.скоростьПадения = скоростьПадения; | |||||
}; | |||||
// // // // | |||||
АнимироватьКолобка = мир => | АнимироватьКолобка = мир => | ||||
{ | { | ||||
var есть = ""; | var есть = ""; | ||||
@@ -132,7 +168,7 @@ | |||||
} | } | ||||
var надо = "колобок-неподвижен"; | var надо = "колобок-неподвижен"; | ||||
if (мир.управление && мир.управление.прыжок && !мир.колобок.body.touching.down) | |||||
if (мир.состояниеКолобка.прыжок) | |||||
{ | { | ||||
надо = "колобок-прыжок"; | надо = "колобок-прыжок"; | ||||
} | } | ||||
@@ -264,6 +300,19 @@ | |||||
}; | }; | ||||
// // // // | |||||
ВывестиНачалоПрыжкаВКонсоль = мир => | |||||
{ | |||||
console.debug("начало прыжка"); | |||||
}; | |||||
ВывестиОкончаниеПрыжкаВКонсоль = мир => | |||||
{ | |||||
console.debug("окончание прыжка. скорость:", мир.состояниеКолобка.скоростьПадения); | |||||
}; | |||||
/* | /* | ||||
* | * | ||||
* Последовательность | * Последовательность | ||||
@@ -283,8 +332,14 @@ | |||||
обновить сцену | обновить сцену | ||||
переместить колобка | переместить колобка | ||||
анимировать колобка | анимировать колобка | ||||
определить окончание прыжка колобка | |||||
мигать колобка | мигать колобка | ||||
остановить передвижение вещей | остановить передвижение вещей | ||||
колобок начал прыжок | |||||
воспроизвести звук прыжка | |||||
вывести начало прыжка в консоль | |||||
колобок закончил прыжок | |||||
вывести окончание прыжка в консоль | |||||
начали мигать колобка | начали мигать колобка | ||||
отключить столкновение с платформами и вещами | отключить столкновение с платформами и вещами | ||||
уменьшить прыгучесть колобка | уменьшить прыгучесть колобка | ||||
@@ -8,6 +8,7 @@ | |||||
ЗагрузитьРесурсыИзбы = мир => | ЗагрузитьРесурсыИзбы = мир => | ||||
{ | { | ||||
мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3"); | мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3"); | ||||
мир.сцена.load.audio("звук-зарядки", "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav"); | |||||
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); | мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg"); | ||||
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png"); | мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png"); | ||||
@@ -17,6 +18,7 @@ | |||||
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); | мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); | ||||
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); | мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png"); | ||||
мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png"); | мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png"); | ||||
мир.сцена.load.image("стрела", "ресурсы/вещи/стрела.png"); | |||||
}; | }; | ||||
@@ -128,11 +130,13 @@ | |||||
y: 180, | y: 180, | ||||
ширина: 12, | ширина: 12, | ||||
}, | }, | ||||
// Стол. | |||||
{ | { | ||||
x: 1270, | x: 1270, | ||||
y: 427, | y: 427, | ||||
ширина: 70, | ширина: 70, | ||||
}, | }, | ||||
// Окно. | |||||
{ | { | ||||
x: 1690, | x: 1690, | ||||
y: 375, | y: 375, | ||||
@@ -192,22 +196,6 @@ | |||||
низ: 550, | низ: 550, | ||||
верх: 270, | верх: 270, | ||||
}, | }, | ||||
/* | |||||
{ | |||||
x: 740, | |||||
y: 445, | |||||
скорость: 65, | |||||
низ: 550, | |||||
верх: 270, | |||||
}, | |||||
{ | |||||
x: 830, | |||||
y: 375, | |||||
скорость: 80, | |||||
низ: 550, | |||||
верх: 270, | |||||
}, | |||||
*/ | |||||
{ | { | ||||
x: 785, | x: 785, | ||||
y: 375, | y: 375, | ||||
@@ -320,6 +308,96 @@ | |||||
}; | }; | ||||
// // // // | |||||
СоздатьСтрелы = мир => | |||||
{ | |||||
мир.стрелаЗаряжена = false; | |||||
// Кучка стрел. | |||||
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; | |||||
}; | |||||
// Стрела в луку. | |||||
мир.стрелаКЛуку = мир.сцена.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); | |||||
// Определение заряда стрелы. | |||||
столкновениеЛука.collideCallback = function заряд(a, b) { | |||||
if (мир.стрелаКЛуку.body.touching.down && !мир.стрелаЗаряжена) | |||||
{ | |||||
мир.стрелаЗаряжена = true; | |||||
мир.уведомить("стрела заряжена"); | |||||
} | |||||
} | |||||
}; | |||||
// // // // | |||||
ОтследитьПрыжокПоСтрелам = мир => | |||||
{ | |||||
мир.состояниеКолобка.прыжокПоСтрелам = null; | |||||
}; | |||||
// // // // | |||||
ПроверитьНаличиеПрыжкаПоСтрелам = мир => | |||||
{ | |||||
if (!мир.состояниеКолобка.прыжокПоСтрелам) | |||||
{ | |||||
return; | |||||
} | |||||
мир.уведомить("прыжок по платформе стрел"); | |||||
}; | |||||
// // // // | |||||
ПодкидыватьСтрелуКЛуку = мир => | |||||
{ | |||||
if (!мир.стрелаКЛуку.body.touching.down || мир.стрелаЗаряжена) | |||||
{ | |||||
return; | |||||
} | |||||
var скорость = мир.состояниеКолобка.скоростьПадения * 0.9; | |||||
мир.стрелаКЛуку.setVelocityY(-скорость); | |||||
}; | |||||
// // // // | |||||
ВоспроизвестиЗвукЗарядкиСтрелы = мир => | |||||
{ | |||||
мир.сцена.sound.play("звук-зарядки"); | |||||
}; | |||||
/* | /* | ||||
* | * | ||||
* Последовательность | * Последовательность | ||||
@@ -338,8 +416,17 @@ | |||||
создать вещи | создать вещи | ||||
создать пауков | создать пауков | ||||
создать мышей | создать мышей | ||||
создать стрелы | |||||
обновить сцену | обновить сцену | ||||
анимировать пауков | анимировать пауков | ||||
анимировать мышей | анимировать мышей | ||||
колобок начал прыжок | |||||
отследить прыжок по стрелам | |||||
колобок закончил прыжок | |||||
проверить наличие прыжка по стрелам | |||||
прыжок по платформе стрел | |||||
подкидывать стрелу к луку | |||||
стрела заряжена | |||||
воспроизвести звук зарядки стрелы | |||||
`); | `); | ||||
@@ -5,3 +5,4 @@ | |||||
* https://freesound.org/people/omerbhatti34/sounds/521552/ | * https://freesound.org/people/omerbhatti34/sounds/521552/ | ||||
* https://freesound.org/people/Czarcazas/sounds/330800/ | * https://freesound.org/people/Czarcazas/sounds/330800/ | ||||
* https://freesound.org/people/Kneeling/sounds/448004/ | * https://freesound.org/people/Kneeling/sounds/448004/ | ||||
* https://freesound.org/people/EminYILDIRIM/sounds/543927/ |