@@ -32,6 +32,7 @@ | |||
<script src="игра/109.управление.js"></script> | |||
<script src="игра/110.колобок.js"></script> | |||
<script src="игра/111.изба.js"></script> | |||
<script src="игра/112.подпол.js"></script> | |||
<script src="игра/200.отладка.js"></script> | |||
<script src="игра/499.пуск.js"></script> | |||
</body> | |||
@@ -79,7 +79,15 @@ | |||
НастроитьСтолкновениеКолобка = мир => | |||
{ | |||
мир.сцена.physics.add.collider(мир.колобок, мир.каркас); | |||
var столкновениеКаркас = мир.сцена.physics.add.collider(мир.колобок, мир.каркас); | |||
столкновениеКаркас.collideCallback = function(a, каркас) { | |||
if (мир.колобок.body.touching.down && каркас.body.touching.up && мир.колобок.прыжок) | |||
{ | |||
мир.колобок.каркас = каркас.name; | |||
мир.уведомить("колобок прыгнул на каркас"); | |||
} | |||
}; | |||
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы); | |||
мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи); | |||
@@ -69,7 +69,7 @@ | |||
originX: 0, | |||
originY: 0, | |||
scaleX: 43, | |||
visible: true, | |||
visible: false, | |||
}, | |||
полКрышки: { | |||
родитель: мир.каркас, | |||
@@ -80,16 +80,16 @@ | |||
originX: 0, | |||
originY: 0, | |||
scaleX: 16, | |||
visible: true, | |||
visible: false, | |||
}, | |||
крышка: { | |||
родитель: мир.сцена, | |||
тип: "изображение", | |||
x: 357, | |||
y: 575, | |||
y: 605, | |||
texture: "крышка-подпола", | |||
originX: 0, | |||
originY: 0, | |||
originY: 1, | |||
scaleX: 0.4, | |||
scaleY: 0.4, | |||
}, | |||
@@ -102,7 +102,7 @@ | |||
originX: 0, | |||
originY: 0, | |||
scaleX: 200, | |||
visible: true, | |||
visible: false, | |||
}, | |||
леваяСтена: { | |||
@@ -459,9 +459,6 @@ | |||
{ | |||
создатьУзлыСценыПоСтруктуре(мир.изба); | |||
мир.сцена.sound.play("звук-избы", { loop: true }); | |||
мир.крышка = мир.узелСцены("крышка"); | |||
мир.полКрышки = мир.узелСцены("полКрышки"); | |||
}; | |||
@@ -877,6 +874,75 @@ | |||
}; | |||
// // // // | |||
ПроверитьПрыжокПоКрышкеПодпола = мир => | |||
{ | |||
if (мир.колобок.каркас == "полКрышки") | |||
{ | |||
мир.уведомить("колобок прыгнул по крышке подпола"); | |||
} | |||
}; | |||
// // // // | |||
НачатьПоворотКрышкиПодпола = мир => | |||
{ | |||
if (мир.крышка) | |||
{ | |||
return; | |||
} | |||
мир.крышка = мир.узелСцены("крышка"); | |||
мир.крышка.поворот = 1; | |||
}; | |||
// // // // | |||
АнимироватьПоворотКрышкиПодпола = мир => | |||
{ | |||
if (!мир.крышка) | |||
{ | |||
return; | |||
} | |||
var скорость = 4; | |||
if (мир.крышка.поворот == 1) | |||
{ | |||
мир.крышка.setAngle(мир.крышка.angle - скорость); | |||
if (мир.крышка.angle <= -90) | |||
{ | |||
мир.крышка.поворот = 2; | |||
} | |||
} | |||
else if (мир.крышка.поворот == 2) | |||
{ | |||
мир.узелСцены("полКрышки").body.checkCollision.none = true; | |||
мир.крышка.поворот = 3; | |||
setTimeout( | |||
function() { | |||
мир.крышка.поворот = 4; | |||
}, | |||
5000 | |||
); | |||
} | |||
else if (мир.крышка.поворот == 4) | |||
{ | |||
мир.крышка.setAngle(мир.крышка.angle + скорость); | |||
if (мир.крышка.angle >= 0) | |||
{ | |||
мир.узелСцены("полКрышки").body.checkCollision.none = false; | |||
мир.крышка = null; | |||
} | |||
} | |||
}; | |||
/* | |||
* | |||
* Последовательность | |||
@@ -928,10 +994,15 @@ | |||
перевернули молоко | |||
показать лужу молока | |||
воспроизвести звук переворота молока | |||
колобок прыгнул на каркас | |||
проверить прыжок по крышке подпола | |||
колобок прыгнул по крышке подпола | |||
начать поворот крышки подпола | |||
обновить сцену | |||
анимировать пауков | |||
анимировать мышей | |||
анимировать переворот молока | |||
анимировать поворот крышки подпола | |||
`); | |||
@@ -0,0 +1,87 @@ | |||
/* | |||
* | |||
* Реакции | |||
* | |||
*/ | |||
ЗагрузитьРесурсыПодпола = мир => | |||
{ | |||
const изображения = { | |||
"лестница": "ресурсы/вещи/лестница.png", | |||
}; | |||
for (var имя in изображения) | |||
{ | |||
мир.сцена.load.image(имя, изображения[имя]); | |||
} | |||
}; | |||
// // // // | |||
ЗадатьСтруктуруПодпола = мир => | |||
{ | |||
мир.подпол = { | |||
пол: { | |||
родитель: мир.каркас, | |||
тип: "платформа", | |||
x: 0, | |||
y: 985, | |||
texture: "основа", | |||
originX: 0, | |||
originY: 0, | |||
scaleX: 250, | |||
visible: true, | |||
}, | |||
леваяСтена: { | |||
родитель: мир.каркас, | |||
тип: "платформа", | |||
x: 0, | |||
y: 600, | |||
texture: "основа", | |||
originX: 0, | |||
originY: 0, | |||
scaleY: 50, | |||
visible: false, | |||
}, | |||
праваяСтена: { | |||
родитель: мир.каркас, | |||
тип: "платформа", | |||
x: 2000, | |||
y: 600, | |||
texture: "основа", | |||
originX: 0, | |||
originY: 0, | |||
scaleY: 50, | |||
visible: false, | |||
}, | |||
}; | |||
}; | |||
// // // // | |||
СоздатьПодпол = мир => | |||
{ | |||
создатьУзлыСценыПоСтруктуре(мир.подпол); | |||
}; | |||
/* | |||
* | |||
* Последовательность | |||
* | |||
*/ | |||
мир.разобрать(` | |||
загрузить ресурсы сцены | |||
загрузить ресурсы подпола | |||
создать сцену | |||
задать структуру подпола | |||
создать подпол | |||
`); | |||