K 0.8.0
This commit is contained in:
@@ -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.7.0</title>
|
<title>К 0.8.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 {
|
||||||
@@ -27,10 +27,12 @@
|
|||||||
<div id="родитель"></div>
|
<div id="родитель"></div>
|
||||||
<script src="игра/001.мир.js"></script>
|
<script src="игра/001.мир.js"></script>
|
||||||
<script src="игра/011.phaser.js"></script>
|
<script src="игра/011.phaser.js"></script>
|
||||||
|
<script src="игра/100.структура.js"></script>
|
||||||
<script src="игра/108.группы.js"></script>
|
<script src="игра/108.группы.js"></script>
|
||||||
<script src="игра/109.управление.js"></script>
|
<script src="игра/109.управление.js"></script>
|
||||||
<script src="игра/110.колобок.js"></script>
|
<script src="игра/110.колобок.js"></script>
|
||||||
<script src="игра/111.изба.js"></script>
|
<script src="игра/111.изба.js"></script>
|
||||||
|
<script src="игра/200.отладка.js"></script>
|
||||||
<script src="игра/499.пуск.js"></script>
|
<script src="игра/499.пуск.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
55
К/игра/100.структура.js
Normal file
55
К/игра/100.структура.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
function создатьУзлыСценыПоСтруктуре(структура)
|
||||||
|
{
|
||||||
|
for (var имя in структура)
|
||||||
|
{
|
||||||
|
var узел = null;
|
||||||
|
var описание = структура[имя];
|
||||||
|
|
||||||
|
var свойства = {};
|
||||||
|
Object.assign(свойства, описание);
|
||||||
|
delete свойства["тип"];
|
||||||
|
delete свойства["x"];
|
||||||
|
delete свойства["y"];
|
||||||
|
delete свойства["texture"];
|
||||||
|
delete свойства["группы"];
|
||||||
|
|
||||||
|
// Создаём узел.
|
||||||
|
if (описание.тип == "изображение")
|
||||||
|
{
|
||||||
|
узел = описание.родитель.add.image(описание.x, описание.y, описание.texture);
|
||||||
|
}
|
||||||
|
else if (описание.тип == "платформа")
|
||||||
|
{
|
||||||
|
узел = описание.родитель.create(описание.x, описание.y, описание.texture);
|
||||||
|
}
|
||||||
|
else if (описание.тип == "спрайт")
|
||||||
|
{
|
||||||
|
узел = описание.родитель.add.sprite(описание.x, описание.y, описание.texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Помещаем в группы.
|
||||||
|
for (var номер in описание.группы)
|
||||||
|
{
|
||||||
|
var группа = описание.группы[номер];
|
||||||
|
группа.add(узел);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Задаём имя.
|
||||||
|
узел.name = имя;
|
||||||
|
|
||||||
|
// Выставляем оставшиеся невыставленными свойства.
|
||||||
|
for (var свойство in свойства)
|
||||||
|
{
|
||||||
|
var значение = свойства[свойство];
|
||||||
|
узел[свойство] = значение;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Необходимо после смены originX/Y.
|
||||||
|
узел.updateDisplayOrigin();
|
||||||
|
// Необходимо для статических физических объектов.
|
||||||
|
if ("refreshBody" in узел)
|
||||||
|
{
|
||||||
|
узел.refreshBody();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,9 @@
|
|||||||
мир.каркас = мир.сцена.physics.add.staticGroup();
|
мир.каркас = мир.сцена.physics.add.staticGroup();
|
||||||
мир.платформы = мир.сцена.physics.add.staticGroup();
|
мир.платформы = мир.сцена.physics.add.staticGroup();
|
||||||
мир.вещи = мир.сцена.add.group();
|
мир.вещи = мир.сцена.add.group();
|
||||||
|
мир.вещиНедвижимые = мир.сцена.add.group();
|
||||||
мир.враги = мир.сцена.physics.add.group({ allowGravity: false });
|
мир.враги = мир.сцена.physics.add.group({ allowGravity: false });
|
||||||
|
мир.стрелы = мир.сцена.physics.add.staticGroup();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -24,6 +26,8 @@
|
|||||||
{
|
{
|
||||||
мир.сцена.physics.add.collider(мир.вещи, мир.каркас);
|
мир.сцена.physics.add.collider(мир.вещи, мир.каркас);
|
||||||
мир.сцена.physics.add.collider(мир.вещи, мир.платформы);
|
мир.сцена.physics.add.collider(мир.вещи, мир.платформы);
|
||||||
|
мир.сцена.physics.add.collider(мир.вещиНедвижимые, мир.каркас);
|
||||||
|
мир.сцена.physics.add.collider(мир.вещиНедвижимые, мир.платформы);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,14 +39,13 @@
|
|||||||
const камера = мир.сцена.cameras.main;
|
const камера = мир.сцена.cameras.main;
|
||||||
камера.startFollow(мир.колобок, false, 0.1, 0.1);
|
камера.startFollow(мир.колобок, false, 0.1, 0.1);
|
||||||
|
|
||||||
мир.состояниеКолобка = {
|
// Состояние.
|
||||||
мигать: false,
|
мир.колобок["мигать"] = false;
|
||||||
мигание: { },
|
мир.колобок["мигание"] = { };
|
||||||
прыгучесть: -570,
|
мир.колобок["прыгучесть"] = -570;
|
||||||
коэффициентПрыгучести: 1,
|
мир.колобок["коэффициентПрыгучести"] = 1;
|
||||||
прыжок: false,
|
мир.колобок["прыжок"] = false;
|
||||||
скоростьПадения: 0,
|
мир.колобок["скоростьПадения"] = 0;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -81,9 +80,17 @@
|
|||||||
НастроитьСтолкновениеКолобка = мир =>
|
НастроитьСтолкновениеКолобка = мир =>
|
||||||
{
|
{
|
||||||
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
|
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
|
||||||
мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи);
|
|
||||||
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);
|
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);
|
||||||
|
|
||||||
|
мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи);
|
||||||
|
мир.столкновениеВещи.collideCallback = function(a, вещь) {
|
||||||
|
if (мир.колобок.body.touching.down && вещь.body.touching.up && мир.колобок.прыжок)
|
||||||
|
{
|
||||||
|
мир.колобок.вещь = вещь.name;
|
||||||
|
мир.уведомить("колобок прыгнул на вещь");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
|
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
|
||||||
столкновениеВраги.overlapOnly = true;
|
столкновениеВраги.overlapOnly = true;
|
||||||
столкновениеВраги.collideCallback = function(a, b) {
|
столкновениеВраги.collideCallback = function(a, b) {
|
||||||
@@ -116,10 +123,10 @@
|
|||||||
}
|
}
|
||||||
мир.колобок.setVelocityX(x);
|
мир.колобок.setVelocityX(x);
|
||||||
|
|
||||||
if (мир.управление.прыжок && !мир.состояниеКолобка.прыжок)
|
if (мир.управление.прыжок && !мир.колобок.прыжок)
|
||||||
{
|
{
|
||||||
мир.состояниеКолобка.прыжок = true;
|
мир.колобок.прыжок = true;
|
||||||
var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести;
|
var скорость = мир.колобок.прыгучесть * мир.колобок.коэффициентПрыгучести;
|
||||||
мир.колобок.setVelocityY(скорость);
|
мир.колобок.setVelocityY(скорость);
|
||||||
мир.уведомить("колобок начал прыжок");
|
мир.уведомить("колобок начал прыжок");
|
||||||
}
|
}
|
||||||
@@ -140,21 +147,22 @@
|
|||||||
|
|
||||||
ОпределитьОкончаниеПрыжкаКолобка = мир =>
|
ОпределитьОкончаниеПрыжкаКолобка = мир =>
|
||||||
{
|
{
|
||||||
if (!мир.состояниеКолобка.прыжок)
|
if (!мир.колобок.прыжок)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var скоростьПадения = мир.колобок.body.velocity.y;
|
var скоростьПадения = мир.колобок.body.velocity.y;
|
||||||
if (
|
if (
|
||||||
(мир.состояниеКолобка.скоростьПадения > 40) &&
|
(мир.колобок.скоростьПадения > 40) &&
|
||||||
(скоростьПадения == 0) &&
|
(скоростьПадения == 0) &&
|
||||||
мир.колобок.body.touching.down
|
мир.колобок.body.touching.down
|
||||||
) {
|
) {
|
||||||
мир.состояниеКолобка.прыжок = false;
|
мир.уведомить("колобок закончит прыжок");
|
||||||
|
мир.колобок.прыжок = false;
|
||||||
мир.уведомить("колобок закончил прыжок");
|
мир.уведомить("колобок закончил прыжок");
|
||||||
}
|
}
|
||||||
мир.состояниеКолобка.скоростьПадения = скоростьПадения;
|
мир.колобок.скоростьПадения = скоростьПадения;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +178,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var надо = "колобок-неподвижен";
|
var надо = "колобок-неподвижен";
|
||||||
if (мир.состояниеКолобка.прыжок)
|
if (мир.колобок.прыжок)
|
||||||
{
|
{
|
||||||
надо = "колобок-прыжок";
|
надо = "колобок-прыжок";
|
||||||
}
|
}
|
||||||
@@ -231,7 +239,7 @@
|
|||||||
{
|
{
|
||||||
var конец = new Date();
|
var конец = new Date();
|
||||||
конец.setSeconds(конец.getSeconds() + 6);
|
конец.setSeconds(конец.getSeconds() + 6);
|
||||||
мир.состояниеКолобка.мигание.окончание = конец;
|
мир.колобок.мигание.окончание = конец;
|
||||||
|
|
||||||
var звук = мир.сцена.sound.get("повреждение");
|
var звук = мир.сцена.sound.get("повреждение");
|
||||||
if (!звук || !звук.isPlaying)
|
if (!звук || !звук.isPlaying)
|
||||||
@@ -239,13 +247,13 @@
|
|||||||
мир.сцена.sound.play("повреждение");
|
мир.сцена.sound.play("повреждение");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (мир.состояниеКолобка.мигать)
|
if (мир.колобок.мигать)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
мир.состояниеКолобка.мигать = true;
|
мир.колобок.мигать = true;
|
||||||
мир.состояниеКолобка.мигание = {
|
мир.колобок.мигание = {
|
||||||
шаг: 0.1,
|
шаг: 0.1,
|
||||||
цель: 0,
|
цель: 0,
|
||||||
};
|
};
|
||||||
@@ -259,17 +267,17 @@
|
|||||||
|
|
||||||
МигатьКолобка = мир =>
|
МигатьКолобка = мир =>
|
||||||
{
|
{
|
||||||
if (!мир.состояниеКолобка.мигать)
|
if (!мир.колобок.мигать)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var м = мир.состояниеКолобка.мигание;
|
var м = мир.колобок.мигание;
|
||||||
var сейчас = new Date();
|
var сейчас = new Date();
|
||||||
|
|
||||||
if (м.окончание - сейчас < 0)
|
if (м.окончание - сейчас < 0)
|
||||||
{
|
{
|
||||||
мир.состояниеКолобка.мигать = false;
|
мир.колобок.мигать = false;
|
||||||
мир.колобок.alpha = 1;
|
мир.колобок.alpha = 1;
|
||||||
мир.уведомить("закончили мигать колобка");
|
мир.уведомить("закончили мигать колобка");
|
||||||
return;
|
return;
|
||||||
@@ -289,7 +297,7 @@
|
|||||||
|
|
||||||
УменьшитьПрыгучестьКолобка = мир =>
|
УменьшитьПрыгучестьКолобка = мир =>
|
||||||
{
|
{
|
||||||
мир.состояниеКолобка.коэффициентПрыгучести = 0.6;
|
мир.колобок.коэффициентПрыгучести = 0.6;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -298,7 +306,7 @@
|
|||||||
|
|
||||||
ВосстановитьПрыгучестьКолобка = мир =>
|
ВосстановитьПрыгучестьКолобка = мир =>
|
||||||
{
|
{
|
||||||
мир.состояниеКолобка.коэффициентПрыгучести = 1;
|
мир.колобок.коэффициентПрыгучести = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -311,7 +319,7 @@
|
|||||||
};
|
};
|
||||||
ВывестиОкончаниеПрыжкаВКонсоль = мир =>
|
ВывестиОкончаниеПрыжкаВКонсоль = мир =>
|
||||||
{
|
{
|
||||||
console.debug("окончание прыжка. скорость:", мир.состояниеКолобка.скоростьПадения);
|
console.debug("окончание прыжка. скорость:", мир.колобок.скоростьПадения);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,14 @@
|
|||||||
мир.сцена.load.audio("пуск-стрелы", "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3");
|
мир.сцена.load.audio("пуск-стрелы", "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3");
|
||||||
мир.сцена.load.audio("удар-стрелы", "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3");
|
мир.сцена.load.audio("удар-стрелы", "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3");
|
||||||
мир.сцена.load.audio("выломали-окно", "ресурсы/звуки/448004__kneeling__break-window.mp3");
|
мир.сцена.load.audio("выломали-окно", "ресурсы/звуки/448004__kneeling__break-window.mp3");
|
||||||
|
мир.сцена.load.audio("молоко-перевернули", "ресурсы/звуки/235596__tcrocker68__large-glassbottle-fall-woodfloor.wav");
|
||||||
|
мир.сцена.load.audio("молоко-прыгнули", "ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav");
|
||||||
|
|
||||||
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
|
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
|
||||||
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
|
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
|
||||||
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
|
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
|
||||||
мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
|
мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
|
||||||
|
мир.сцена.load.image("лужа", "ресурсы/вещи/лужа.png");
|
||||||
мир.сцена.load.image("паук", "ресурсы/животные/паук.png");
|
мир.сцена.load.image("паук", "ресурсы/животные/паук.png");
|
||||||
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
|
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
|
||||||
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
|
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
|
||||||
@@ -30,139 +33,407 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьИзбу = мир =>
|
ЗадатьСтруктуруИзбы = мир =>
|
||||||
{
|
{
|
||||||
мир.сцена.sound.play("звук-избы", { loop: true });
|
мир.изба = {
|
||||||
|
фон: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
texture: "изба",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
},
|
||||||
|
|
||||||
мир.сцена.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);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
|
||||||
|
|
||||||
|
|
||||||
СоздатьПолыИСтеныКаркаса = мир =>
|
|
||||||
{
|
|
||||||
var полы = [
|
|
||||||
{
|
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 585,
|
y: 585,
|
||||||
ширина: 43,
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 43,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
{
|
полКрышки: {
|
||||||
|
родитель: мир.каркас,
|
||||||
|
тип: "платформа",
|
||||||
x: 300,
|
x: 300,
|
||||||
y: 585,
|
y: 585,
|
||||||
ширина: 30,
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 30,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
{
|
полПослеКрышки: {
|
||||||
|
родитель: мир.каркас,
|
||||||
|
тип: "платформа",
|
||||||
x: 510,
|
x: 510,
|
||||||
y: 585,
|
y: 585,
|
||||||
ширина: 200,
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 200,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
];
|
|
||||||
for (var номер in полы)
|
|
||||||
{
|
|
||||||
var пол = полы[номер];
|
|
||||||
var элемент = мир.каркас.create(пол.x, пол.y, "основа").setOrigin(0, 0);
|
|
||||||
элемент.setScale(пол.ширина, 1).refreshBody();
|
|
||||||
элемент.setVisible(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
var стены = [
|
леваяСтена: {
|
||||||
{
|
родитель: мир.каркас,
|
||||||
|
тип: "платформа",
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 385,
|
y: 200,
|
||||||
высота: 50,
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleY: 50,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
{
|
праваяСтена: {
|
||||||
|
родитель: мир.каркас,
|
||||||
|
тип: "платформа",
|
||||||
x: 2000,
|
x: 2000,
|
||||||
y: 385,
|
y: 200,
|
||||||
высота: 50,
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleY: 50,
|
||||||
|
visible: false,
|
||||||
},
|
},
|
||||||
];
|
|
||||||
for (var номер in стены)
|
фундаментПечи: {
|
||||||
{
|
родитель: мир.платформы,
|
||||||
var стена = стены[номер];
|
тип: "платформа",
|
||||||
var элемент = мир.каркас.create(стена.x, стена.y, "основа");
|
x: 583,
|
||||||
элемент.setScale(1, стена.высота).refreshBody();
|
y: 473,
|
||||||
элемент.setVisible(false);
|
texture: "основа",
|
||||||
}
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 65,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
полка1: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 666,
|
||||||
|
y: 335,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 3,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
полкаМолока: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 771,
|
||||||
|
y: 335,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 3,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
полка3: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 862,
|
||||||
|
y: 335,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 3,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
полкаСамовара: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 995,
|
||||||
|
y: 355,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 4,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
лежанкаПечи: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 620,
|
||||||
|
y: 245,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 35,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
основаТрубыПечи: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 950,
|
||||||
|
y: 180,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 12,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
стол: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1270,
|
||||||
|
y: 427,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 70,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
подоконник: {
|
||||||
|
родитель: мир.платформы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1690,
|
||||||
|
y: 375,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 20,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
разбитоеОкно: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 1660,
|
||||||
|
y: 183,
|
||||||
|
texture: "окно-разбито",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 0.75,
|
||||||
|
scaleY: 0.75,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
выломанноеОкно: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 1660,
|
||||||
|
y: 183,
|
||||||
|
texture: "окно-выломано",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 0.75,
|
||||||
|
scaleY: 0.75,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
молоко: {
|
||||||
|
родитель: мир.сцена.physics,
|
||||||
|
тип: "спрайт",
|
||||||
|
группы: [мир.вещи],
|
||||||
|
x: 785,
|
||||||
|
y: 240,
|
||||||
|
texture: "молоко",
|
||||||
|
scaleX: 0.4,
|
||||||
|
scaleY: 0.4,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
лужа: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 285,
|
||||||
|
y: 585,
|
||||||
|
texture: "лужа",
|
||||||
|
scaleX: 0.25,
|
||||||
|
scaleY: 0.25,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
самовар: {
|
||||||
|
родитель: мир.сцена.physics,
|
||||||
|
тип: "спрайт",
|
||||||
|
группы: [мир.вещи],
|
||||||
|
x: 1003,
|
||||||
|
y: 200,
|
||||||
|
texture: "самовар",
|
||||||
|
scaleX: 0.25,
|
||||||
|
scaleY: 0.25,
|
||||||
|
depth: 5,
|
||||||
|
},
|
||||||
|
|
||||||
|
паук1: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 620,
|
||||||
|
y: 345,
|
||||||
|
texture: "паук",
|
||||||
|
скорость: 50,
|
||||||
|
низ: 550,
|
||||||
|
верх: 270,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
нить1: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 619,
|
||||||
|
y: 245,
|
||||||
|
texture: "линия",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
паук2: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 785,
|
||||||
|
y: 375,
|
||||||
|
texture: "паук",
|
||||||
|
скорость: 70,
|
||||||
|
низ: 600,
|
||||||
|
верх: 270,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
нить2: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 784,
|
||||||
|
y: 245,
|
||||||
|
texture: "линия",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
паук3: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 930,
|
||||||
|
y: 500,
|
||||||
|
texture: "паук",
|
||||||
|
скорость: 70,
|
||||||
|
низ: 550,
|
||||||
|
верх: 270,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
нить3: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 929,
|
||||||
|
y: 245,
|
||||||
|
texture: "линия",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
паук4: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1003,
|
||||||
|
y: 250,
|
||||||
|
texture: "паук",
|
||||||
|
скорость: 40,
|
||||||
|
низ: 400,
|
||||||
|
верх: 200,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
нить4: {
|
||||||
|
родитель: мир.сцена,
|
||||||
|
тип: "изображение",
|
||||||
|
x: 1002,
|
||||||
|
y: 180,
|
||||||
|
texture: "линия",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
depth: 10,
|
||||||
|
},
|
||||||
|
|
||||||
|
мышь1: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 350,
|
||||||
|
y: 575,
|
||||||
|
texture: "мышь",
|
||||||
|
flipX: true,
|
||||||
|
depth: 10,
|
||||||
|
скорость: 290,
|
||||||
|
},
|
||||||
|
мышь2: {
|
||||||
|
родитель: мир.враги,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 740,
|
||||||
|
y: 575,
|
||||||
|
texture: "мышь",
|
||||||
|
flipX: true,
|
||||||
|
depth: 10,
|
||||||
|
скорость: 375,
|
||||||
|
},
|
||||||
|
|
||||||
|
кучаСтрел: {
|
||||||
|
родитель: мир.стрелы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1270,
|
||||||
|
y: 405,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleX: 25,
|
||||||
|
scaleY: 2,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
лук: {
|
||||||
|
родитель: мир.стрелы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1280,
|
||||||
|
y: 200,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
пускСтрелы: {
|
||||||
|
родитель: мир.стрелы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1270,
|
||||||
|
y: 160,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
границаПолётаСтрелы: {
|
||||||
|
родитель: мир.стрелы,
|
||||||
|
тип: "платформа",
|
||||||
|
x: 1830,
|
||||||
|
y: 200,
|
||||||
|
texture: "основа",
|
||||||
|
originX: 0,
|
||||||
|
originY: 0,
|
||||||
|
scaleY: 20,
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьПлатформы = мир =>
|
ЗадатьФункциюПоискаУзлаПоИмени = мир =>
|
||||||
{
|
{
|
||||||
var п = [
|
мир.узелСцены = function(имя) {
|
||||||
{
|
return мир.сцена.children.list.find(function(элемент) {
|
||||||
x: 583,
|
return элемент.name == имя;
|
||||||
y: 473,
|
});
|
||||||
ширина: 65,
|
};
|
||||||
},
|
};
|
||||||
// Полка 1.
|
|
||||||
{
|
|
||||||
x: 666,
|
// // // //
|
||||||
y: 335,
|
|
||||||
ширина: 3,
|
|
||||||
},
|
СоздатьИзбу = мир =>
|
||||||
// Полка молока.
|
{
|
||||||
{
|
создатьУзлыСценыПоСтруктуре(мир.изба);
|
||||||
x: 771,
|
мир.сцена.sound.play("звук-избы", { loop: true });
|
||||||
y: 335,
|
|
||||||
ширина: 3,
|
|
||||||
},
|
|
||||||
// Полка 3.
|
|
||||||
{
|
|
||||||
x: 862,
|
|
||||||
y: 335,
|
|
||||||
ширина: 3,
|
|
||||||
},
|
|
||||||
// Полка самовара.
|
|
||||||
{
|
|
||||||
x: 995,
|
|
||||||
y: 355,
|
|
||||||
ширина: 4,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 620,
|
|
||||||
y: 245,
|
|
||||||
ширина: 35,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 950,
|
|
||||||
y: 180,
|
|
||||||
ширина: 12,
|
|
||||||
},
|
|
||||||
// Стол.
|
|
||||||
{
|
|
||||||
x: 1270,
|
|
||||||
y: 427,
|
|
||||||
ширина: 70,
|
|
||||||
},
|
|
||||||
// Окно.
|
|
||||||
{
|
|
||||||
x: 1690,
|
|
||||||
y: 375,
|
|
||||||
ширина: 20,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
for (var номер in п)
|
|
||||||
{
|
|
||||||
var часть = п[номер];
|
|
||||||
var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
|
|
||||||
элемент.setScale(часть.ширина, 1).refreshBody();
|
|
||||||
элемент.setVisible(false);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -182,67 +453,21 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьВещи = мир =>
|
НастроитьПауков = мир =>
|
||||||
{
|
{
|
||||||
var молоко = мир.сцена.physics.add.sprite(785, 240, "молоко");
|
|
||||||
молоко.setScale(0.4, 0.4).refreshBody();
|
|
||||||
молоко.depth = 5;
|
|
||||||
мир.вещи.add(молоко);
|
|
||||||
|
|
||||||
var самовар = мир.сцена.physics.add.sprite(1003, 200, "самовар");
|
|
||||||
самовар.setScale(0.25, 0.25).refreshBody();
|
|
||||||
самовар.depth = 5;
|
|
||||||
мир.вещи.add(самовар);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
|
||||||
|
|
||||||
|
|
||||||
СоздатьПауков = мир =>
|
|
||||||
{
|
|
||||||
мир.настройкиПауков = [
|
|
||||||
{
|
|
||||||
x: 620,
|
|
||||||
y: 345,
|
|
||||||
скорость: 50,
|
|
||||||
низ: 550,
|
|
||||||
верх: 270,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 785,
|
|
||||||
y: 375,
|
|
||||||
скорость: 80,
|
|
||||||
низ: 400,
|
|
||||||
верх: 270,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 930,
|
|
||||||
y: 500,
|
|
||||||
скорость: 70,
|
|
||||||
низ: 550,
|
|
||||||
верх: 270,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 1003,
|
|
||||||
y: 250,
|
|
||||||
скорость: 40,
|
|
||||||
низ: 400,
|
|
||||||
верх: 200,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
мир.пауки = [];
|
мир.пауки = [];
|
||||||
мир.нитиПауков = [];
|
мир.нитиПауков = [];
|
||||||
for (var номер in мир.настройкиПауков)
|
for (var имя in мир.изба)
|
||||||
{
|
{
|
||||||
var настройки = мир.настройкиПауков[номер];
|
if (имя.startsWith("паук"))
|
||||||
var паук = мир.враги.create(настройки.x, настройки.y, "паук");
|
{
|
||||||
паук.body.setVelocityY(настройки.скорость);
|
var паук = мир.узелСцены(имя);
|
||||||
паук.depth = 10;
|
var имяНити = имя.replace("паук", "нить");
|
||||||
мир.пауки.push(паук);
|
var нить = мир.узелСцены(имяНити);
|
||||||
var нить = мир.сцена.add.image(настройки.x - 1, настройки.верх - 25, "линия").setOrigin(0, 0);
|
паук.body.setVelocityY(паук.скорость);
|
||||||
нить.depth = паук.depth;
|
мир.пауки.push(паук);
|
||||||
мир.нитиПауков.push(нить);
|
мир.нитиПауков.push(нить);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -256,14 +481,13 @@
|
|||||||
{
|
{
|
||||||
var паук = мир.пауки[номер];
|
var паук = мир.пауки[номер];
|
||||||
var нить = мир.нитиПауков[номер];
|
var нить = мир.нитиПауков[номер];
|
||||||
var настройки = мир.настройкиПауков[номер];
|
|
||||||
нить.displayHeight = паук.y - нить.y - 5;
|
нить.displayHeight = паук.y - нить.y - 5;
|
||||||
if (паук.y > настройки.низ)
|
if (паук.y > паук.низ)
|
||||||
{
|
{
|
||||||
паук.setVelocityY(-настройки.скорость);
|
паук.setVelocityY(-паук.скорость);
|
||||||
} else if (паук.y < настройки.верх)
|
} else if (паук.y < паук.верх)
|
||||||
{
|
{
|
||||||
паук.setVelocityY(настройки.скорость);
|
паук.setVelocityY(паук.скорость);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -272,29 +496,17 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьМышей = мир =>
|
НастроитьМышей = мир =>
|
||||||
{
|
{
|
||||||
мир.настройкиМышей= [
|
|
||||||
{
|
|
||||||
x: 350,
|
|
||||||
y: 575,
|
|
||||||
скорость: 290,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
x: 740,
|
|
||||||
y: 575,
|
|
||||||
скорость: 375,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
мир.мыши = [];
|
мир.мыши = [];
|
||||||
for (var номер in мир.настройкиМышей)
|
for (var имя in мир.изба)
|
||||||
{
|
{
|
||||||
var настройки = мир.настройкиМышей[номер];
|
if (имя.startsWith("мышь"))
|
||||||
var мышь = мир.враги.create(настройки.x, настройки.y, "мышь");
|
{
|
||||||
мышь.body.setVelocityX(настройки.скорость);
|
var мышь = мир.узелСцены(имя);
|
||||||
мышь.depth = 10;
|
мышь.body.setVelocityX(мышь.скорость);
|
||||||
мышь.flipX = true;
|
мир.мыши.push(мышь);
|
||||||
мир.мыши.push(мышь);
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -307,14 +519,13 @@
|
|||||||
for (var номер in мир.мыши)
|
for (var номер in мир.мыши)
|
||||||
{
|
{
|
||||||
var мышь= мир.мыши[номер];
|
var мышь= мир.мыши[номер];
|
||||||
var скорость = мир.настройкиМышей[номер].скорость;
|
|
||||||
if (мышь.x > 1950)
|
if (мышь.x > 1950)
|
||||||
{
|
{
|
||||||
мышь.setVelocityX(-скорость);
|
мышь.setVelocityX(-мышь.скорость);
|
||||||
мышь.flipX = false;
|
мышь.flipX = false;
|
||||||
} else if (мышь.x < 50)
|
} else if (мышь.x < 50)
|
||||||
{
|
{
|
||||||
мышь.setVelocityX(скорость);
|
мышь.setVelocityX(мышь.скорость);
|
||||||
мышь.flipX = true;
|
мышь.flipX = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -324,30 +535,18 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьСтрелы = мир =>
|
НастроитьСтрелы = мир =>
|
||||||
{
|
{
|
||||||
мир.пфСтрел = мир.сцена.physics.add.staticGroup();
|
var куча = мир.узелСцены("кучаСтрел");
|
||||||
var куча = мир.пфСтрел.create(1270, 405, "основа").setOrigin(0, 0);
|
|
||||||
куча.setScale(25, 2).refreshBody();
|
|
||||||
куча.body.checkCollision.down = false;
|
куча.body.checkCollision.down = false;
|
||||||
куча.setVisible(false);
|
var лук = мир.узелСцены("лук");
|
||||||
|
лук.body.checkCollision.down = false;
|
||||||
мир.пфЛук = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0);
|
var пуск = мир.узелСцены("пускСтрелы");
|
||||||
мир.пфЛук.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) {
|
мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) {
|
||||||
if (мир.колобок.body.touching.down) {
|
if (мир.колобок.body.touching.down) {
|
||||||
мир.состояниеКолобка.прыжокПоСтрелам = true;
|
мир.колобок.прыжокПоСтрелам = true;
|
||||||
console.debug("прыжок по стрелам");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -358,7 +557,6 @@ console.debug("прыжок по стрелам");
|
|||||||
{
|
{
|
||||||
мир.пускСтрелы = true;
|
мир.пускСтрелы = true;
|
||||||
мир.уведомить("пуск стрелы");
|
мир.уведомить("пуск стрелы");
|
||||||
console.debug("пуск стрелы");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
стПуск.overlapOnly = true;
|
стПуск.overlapOnly = true;
|
||||||
@@ -381,29 +579,27 @@ console.debug("пуск стрелы");
|
|||||||
мир.сцена.physics.add.collider(мир.стрела, мир.платформы);
|
мир.сцена.physics.add.collider(мир.стрела, мир.платформы);
|
||||||
|
|
||||||
// Определение заряда стрелы.
|
// Определение заряда стрелы.
|
||||||
var стЛук = мир.сцена.physics.add.collider(мир.стрела, мир.пфЛук);
|
var лук = мир.узелСцены("лук");
|
||||||
стЛук.collideCallback = function заряд(a, b) {
|
var стЛук = мир.сцена.physics.add.collider(мир.стрела, лук);
|
||||||
|
стЛук.collideCallback = function(a, b) {
|
||||||
if (мир.стрела.body.touching.down && !мир.стрелаЗаряжена)
|
if (мир.стрела.body.touching.down && !мир.стрелаЗаряжена)
|
||||||
{
|
{
|
||||||
мир.стрелаЗаряжена = true;
|
мир.стрелаЗаряжена = true;
|
||||||
мир.уведомить("стрела заряжена");
|
мир.уведомить("стрела заряжена");
|
||||||
console.debug("стрела заряжена");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Определение столкновения с окном.
|
// Определение столкновения с окном.
|
||||||
var стОкно = мир.сцена.physics.add.collider(мир.стрела, мир.пфОкно);
|
var граница = мир.узелСцены("границаПолётаСтрелы");
|
||||||
|
var стОкно = мир.сцена.physics.add.collider(мир.стрела, граница);
|
||||||
стОкно.collideCallback = function(a, b) {
|
стОкно.collideCallback = function(a, b) {
|
||||||
if (мир.стрелаЗаряжена && мир.пускСтрелы)
|
if (мир.стрелаЗаряжена && мир.пускСтрелы)
|
||||||
{
|
{
|
||||||
мир.стрелаЗаряжена = false;
|
мир.стрелаЗаряжена = false;
|
||||||
мир.пускСтрелы = false;
|
мир.пускСтрелы = false;
|
||||||
мир.уведомить("удар стрелы об окно");
|
мир.уведомить("удар стрелы об окно");
|
||||||
console.debug("удар стрелы об окно");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
console.debug("стрела.x", мир.стрела.x);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -412,7 +608,7 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
|
|
||||||
ОтследитьПрыжокПоСтрелам = мир =>
|
ОтследитьПрыжокПоСтрелам = мир =>
|
||||||
{
|
{
|
||||||
мир.состояниеКолобка.прыжокПоСтрелам = null;
|
мир.колобок.прыжокПоСтрелам = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -421,7 +617,7 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
|
|
||||||
ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
|
ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
|
||||||
{
|
{
|
||||||
if (!мир.состояниеКолобка.прыжокПоСтрелам)
|
if (!мир.колобок.прыжокПоСтрелам)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -438,7 +634,7 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var скорость = мир.состояниеКолобка.скоростьПадения * 0.9;
|
var скорость = мир.колобок.скоростьПадения * 0.9;
|
||||||
мир.стрела.setVelocityY(-скорость);
|
мир.стрела.setVelocityY(-скорость);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -466,7 +662,16 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
|
|
||||||
ПуститьСтрелу = мир =>
|
ПуститьСтрелу = мир =>
|
||||||
{
|
{
|
||||||
мир.стрела.setVelocityX(1200);
|
function randInt(min, max)
|
||||||
|
{
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#getting_a_random_integer_between_two_values
|
||||||
|
min = Math.ceil(min);
|
||||||
|
max = Math.floor(max);
|
||||||
|
return Math.floor(Math.random() * (max - min)) + min;
|
||||||
|
}
|
||||||
|
var скорость = randInt(1100, 1300);
|
||||||
|
|
||||||
|
мир.стрела.setVelocityX(скорость);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -484,7 +689,7 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
|
|
||||||
ОтобразитьРазбитоеОкно = мир =>
|
ОтобразитьРазбитоеОкно = мир =>
|
||||||
{
|
{
|
||||||
мир.разбитоеОкно.setVisible(true);
|
мир.узелСцены("разбитоеОкно").setVisible(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -493,8 +698,8 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
|
|
||||||
ОтобразитьВыломанноеОкно = мир =>
|
ОтобразитьВыломанноеОкно = мир =>
|
||||||
{
|
{
|
||||||
мир.разбитоеОкно.setVisible(false);
|
мир.узелСцены("разбитоеОкно").setVisible(false);
|
||||||
мир.выломанноеОкно.setVisible(true);
|
мир.узелСцены("выломанноеОкно").setVisible(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -539,6 +744,111 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПроверитьПрыжокПоМолоку = мир =>
|
||||||
|
{
|
||||||
|
if (мир.колобок.вещь == "молоко")
|
||||||
|
{
|
||||||
|
мир.уведомить("колобок прыгнул по молоку");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПроверитьДостаточностьПрыжкаПоМолоку = мир =>
|
||||||
|
{
|
||||||
|
if (мир.колобок.скоростьПадения >= 500) {
|
||||||
|
мир.уведомить("достаточный прыжок по молоку");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
НачатьПереворотМолока = мир =>
|
||||||
|
{
|
||||||
|
мир.молоко = мир.узелСцены("молоко");
|
||||||
|
мир.вещи.remove(мир.молоко);
|
||||||
|
мир.вещиНедвижимые.add(мир.молоко);
|
||||||
|
мир.молоко.setAngularVelocity(120);
|
||||||
|
мир.молоко.setVelocityY(-500);
|
||||||
|
мир.молоко.переворот = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
АнимироватьПереворотМолока = мир =>
|
||||||
|
{
|
||||||
|
if (!мир.молоко)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (мир.молоко.переворот == 1)
|
||||||
|
{
|
||||||
|
мир.молоко.переворот = 2;
|
||||||
|
setTimeout(
|
||||||
|
function() {
|
||||||
|
мир.молоко.переворот = 3;
|
||||||
|
// Меняем местами высоту и ширину тела.
|
||||||
|
var тело = мир.молоко.body;
|
||||||
|
var ширина = тело.height / мир.молоко.scaleY;
|
||||||
|
var высота = тело.width / мир.молоко.scaleX;
|
||||||
|
тело.setSize(ширина, высота);
|
||||||
|
},
|
||||||
|
100
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if (
|
||||||
|
(мир.молоко.переворот == 3) &&
|
||||||
|
(мир.молоко.body.touching.down)
|
||||||
|
) {
|
||||||
|
мир.молоко.depth = 5;
|
||||||
|
мир.молоко.body.stop();
|
||||||
|
мир.молоко = null;
|
||||||
|
мир.уведомить("перевернули молоко");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ПоказатьЛужуМолока = мир =>
|
||||||
|
{
|
||||||
|
|
||||||
|
var молоко = мир.узелСцены("молоко");
|
||||||
|
var лужа = мир.узелСцены("лужа");
|
||||||
|
лужа.setPosition(молоко.x + 40, молоко.y + 20);
|
||||||
|
лужа.setVisible(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ВоспроизвестиЗвукПрыжкаПоМолоку = мир =>
|
||||||
|
{
|
||||||
|
мир.сцена.sound.play("молоко-прыгнули");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
ВоспроизвестиЗвукПереворотаМолока = мир =>
|
||||||
|
{
|
||||||
|
мир.сцена.sound.play("молоко-перевернули", { seek: 1 });
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Последовательность
|
* Последовательность
|
||||||
@@ -550,18 +860,14 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
загрузить ресурсы сцены
|
загрузить ресурсы сцены
|
||||||
загрузить ресурсы избы
|
загрузить ресурсы избы
|
||||||
создать сцену
|
создать сцену
|
||||||
|
задать структуру избы
|
||||||
|
задать функцию поиска узла по имени
|
||||||
создать избу
|
создать избу
|
||||||
создать полы и стены каркаса
|
|
||||||
создать платформы
|
|
||||||
позволить платформам пропускать прыжки
|
позволить платформам пропускать прыжки
|
||||||
создать вещи
|
настроить пауков
|
||||||
создать пауков
|
настроить мышей
|
||||||
создать мышей
|
настроить стрелы
|
||||||
создать стрелы
|
|
||||||
создать стрелу
|
создать стрелу
|
||||||
обновить сцену
|
|
||||||
анимировать пауков
|
|
||||||
анимировать мышей
|
|
||||||
колобок начал прыжок
|
колобок начал прыжок
|
||||||
отследить прыжок по стрелам
|
отследить прыжок по стрелам
|
||||||
колобок закончил прыжок
|
колобок закончил прыжок
|
||||||
@@ -584,5 +890,20 @@ console.debug("стрела.x", мир.стрела.x);
|
|||||||
воспроизвести звук выломанного окна
|
воспроизвести звук выломанного окна
|
||||||
сразу после удара
|
сразу после удара
|
||||||
создать стрелу
|
создать стрелу
|
||||||
|
колобок прыгнул на вещь
|
||||||
|
проверить прыжок по молоку
|
||||||
|
колобок прыгнул по молоку
|
||||||
|
проверить достаточность прыжка по молоку
|
||||||
|
воспроизвести звук прыжка по молоку
|
||||||
|
достаточный прыжок по молоку
|
||||||
|
начать переворот молока
|
||||||
|
перевернули молоко
|
||||||
|
показать лужу молока
|
||||||
|
воспроизвести звук переворота молока
|
||||||
|
|
||||||
|
обновить сцену
|
||||||
|
анимировать пауков
|
||||||
|
анимировать мышей
|
||||||
|
анимировать переворот молока
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
|||||||
43
К/игра/200.отладка.js
Normal file
43
К/игра/200.отладка.js
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Реакции
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
УведомитьЛишьПервыйРаз = мир =>
|
||||||
|
{
|
||||||
|
if (мир.уведомилиЛишьПервыйРаз)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
мир.уведомилиЛишьПервыйРаз = true;
|
||||||
|
мир.уведомить("лишь первый раз");
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ВывестиУзлыСцены = мир =>
|
||||||
|
{
|
||||||
|
var узлы = мир.сцена.children.list;
|
||||||
|
for (var номер in узлы)
|
||||||
|
{
|
||||||
|
var узел = узлы[номер];
|
||||||
|
console.debug(номер + ": " + JSON.stringify(узел.toJSON()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Последовательность
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
мир.разобрать(`
|
||||||
|
#обновить сцену
|
||||||
|
# уведомить лишь первый раз
|
||||||
|
#лишь первый раз
|
||||||
|
# вывести узлы сцены
|
||||||
|
`);
|
||||||
|
|
||||||
BIN
К/ресурсы/вещи/лужа.png
Normal file
BIN
К/ресурсы/вещи/лужа.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
Binary file not shown.
BIN
К/ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav
Normal file
BIN
К/ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav
Normal file
Binary file not shown.
@@ -6,3 +6,5 @@
|
|||||||
* 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/
|
* https://freesound.org/people/EminYILDIRIM/sounds/543927/
|
||||||
|
* https://freesound.org/people/tcrocker68/sounds/235596/
|
||||||
|
* https://freesound.org/people/cabled_mess/sounds/352065/
|
||||||
|
|||||||
Reference in New Issue
Block a user