Files
mjs/800.пример.json.js
2021-07-23 14:51:57 +03:00

358 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// // // //
// Основа избы
// // // //
мир.разобрать({
заголовок: "Колобку здесь быть",
изображения: {
дом: {
ширина: 2000,
высота: 600,
вид: {
background: "url(р/сцены/изба.jpg)",
},
},
},
объекты: {
полСлева: {
x: 0,
y: 580,
ширина: 355,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
},
полКрышки: {
x: 357,
y: 580,
ширина: 135,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
},
полСправа: {
x: 495,
y: 580,
ширина: 1505,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
},
стол: {
x: 1253,
y: 420,
ширина: 610,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
подоконник: {
x: 1673,
y: 375,
ширина: 200,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
angle: -0.0698,
collisionFilter: {
category: 2,
},
},
},
},
});
// // // //
// Игрок
// // // //
мир.разобрать({
изображения: {
колобок: {
//x: 100,
x: 1180,
y: 250,
ширина: 70,
высота: 70,
вид: {
background: "url(р/колобок/колобок_неподвижен.png)",
"z-index": 10,
},
},
},
объекты: {
кирпич: {
x: 1170,
y: 350,
высота: 20,
ширина: 40,
вид: {
background: "url(р/отладка/основа.jpg)",
display: "none",
},
физика: {
isStatic: false,
inertia: Infinity,
},
},
},
игрок: {
объект: "кирпич",
скорость: [5, 12],
клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
},
слежение: {
колобок: {
объект: "кирпич",
изображение: "колобок",
смещение: [-35, -65],
скорость: 1,
},
камера: {
объект: "кирпич",
скорость: 0.1,
},
},
});
// // // //
// Платформы и объекты печи
// // // //
мир.разобрать({
объекты: {
фундаментПечи: {
x: 570,
y: 470,
ширина: 550,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
полка1: {
x: 660,
y: 335,
ширина: 40,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
полка2: {
x: 767,
y: 335,
ширина: 40,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
полка3: {
x: 855,
y: 335,
ширина: 40,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
полкаСамовара: {
x: 975,
y: 355,
ширина: 70,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
лежанкаПечки: {
x: 600,
y: 242,
ширина: 330,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
основаниеТрубыПечки: {
x: 937,
y: 175,
ширина: 130,
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
},
физика: {
collisionFilter: {
category: 2,
},
},
},
самовар: {
x: 650,
y: 300,
ширина: 70,
высота: 120,
вид: {
background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
},
физика: {
isStatic: false,
//inertia: Infinity,
},
},
},
});
// // // //
// Подкидывание стрелы
// // // //
мир.подкидываниеСтрелы = {
сенсор: null,
стрела: null,
подкинули: false,
};
мир.отладка = {
сенсор: null,
стрела: null,
срабатывание: false,
};
мир.разобрать({
объекты: {
сенсор: {
x: 1280,
y: 400,
ширина: 120,
вид: {
background: "url(р/отладка/основа.jpg)",
display: "none",
},
физика: {
isStatic: true,
isSensor: true,
},
},
стрела: {
x: 1230,
y: 350,
высота: 30,
ширина: 200,
вид: {
display: "inline-block",
background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
transform: "scaleX(-1)",
},
физика: {
isStatic: false,
inertia: Infinity,
collisionFilter: {
category: 4,
},
},
},
},
столкновения: {
стрела: {
объекты: ["кирпич", "сенсор"],
действие: "возможноПодкинутьСтрелу",
},
},
действия: {
подкинутьСтрелу: [
() => { Matter.Body.setVelocity(мир.объекты.тела.стрела, { x: 0, y: -мир.игрок.приземление.скорость }); },
],
возможноПодкинутьСтрелу: [
() => {
мир.отладка.сенсор = мир.физика.движок.timing.timestamp;
},
"вывестиОтладку",
],
игрокНачалПрыжок: [
() => {
мир.отладка.сенсор = null;
мир.отладка.стрела = null;
мир.отладка.срабатывание = false;
},
],
игрокПриземлился: [
() => { console.debug("приземлились со скоростью", мир.игрок.приземление.скорость); },
() => {
мир.отладка.стрела = мир.физика.движок.timing.timestamp;
},
"вывестиОтладку",
],
вывестиОтладку: [
() => {
if (
мир.отладка.срабатывание ||
!мир.отладка.стрела ||
!мир.отладка.сенсор ||
Math.abs(мир.отладка.стрела - мир.отладка.сенсор) > 0.00001 ||
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
) {
return;
}
мир.отладка.срабатывание = true;
мир.действия.совершить("подкинутьСтрелу");
console.debug("раз", мир.отладка.сенсор, мир.отладка.стрела);
},
],
},
});