Files
mjs/800.пример.json.js

444 lines
12 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,
},
},
},
},
});
// // // //
// Игрок
// // // //
мир.разобрать({
изображения: {
колобок: {
ширина: 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.5],
клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
},
слежение: {
колобок: {
объект: "кирпич",
изображение: "колобок",
смещение: [-35, -60],
скорость: 1,
},
камера: {
объект: "кирпич",
скорость: 0.1,
},
},
маскиПрыжков: {
игрок: {
объект: "кирпич",
скорость: -1,
маски: [1, 1|2],
},
},
звуки: {
прыжокИгрока: {
события: ["игрок начал прыжок"],
файл: "р/звуки/331381__qubodup__public-domain-jump-sound.wav",
},
},
});
// // // //
// Платформы и объекты печи
// // // //
мир.разобрать({
объекты: {
фундаментПечи: {
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,
},
},
},
});
// // // //
// Подкидывание стрелы
// // // //
мир.разобрать({
объекты: {
сенсор: {
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,
},
},
},
лук: {
x: 1250,
y: 200,
ширина: 100,
вид: {
background: "url(р/отладка/основа.jpg)",
display: "none",
},
физика: {
isStatic: true,
collisionFilter: {
category: 4,
},
},
},
},
столкновения: {
стрелаНачало: {
объекты: ["кирпич", "сенсор"],
событие: "сенсор стрелы",
},
стрелаКонец: {
объекты: ["стрела", "лук"],
событие: "стрела и лук",
},
},
маскиПрыжков: {
стрела: {
объект: "стрела",
скорость: -1,
маски: [0, 2|4]
},
},
звуки: {
зарядкаЛука: {
события: ["закинули стрелу"],
файл: "р/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
},
},
});
function ПодкидываниеСтрелы() {
this.создать = function() {
this.времяСтрелы = null;
this.времяПриземления = null;
this.подкинули = false;
this.закинули = false;
this.завершить = null;
мир.события.подписать(this);
};
this.обработатьСобытие = function(событие) {
if (событие == "сенсор стрелы")
{
this.времяСтрелы = мир.физика.движок.timing.timestamp;
this.подкинуть();
}
else if (событие == "игрок приземлился")
{
this.времяПриземления = мир.физика.движок.timing.timestamp;
this.подкинуть();
}
else if (событие == "игрок начал прыжок")
{
this.времяСтрелы = null;
this.времяПриземления = null;
this.подкинули = false;
}
else if (
(событие == "стрела и лук") &&
this.закинули &&
this.завершить
) {
мир.события.уведомить("закинули стрелу");
мир.события.отписать(this);
this.завершить();
}
};
this.подкинуть = function() {
if (
this.подкинули ||
!this.времяСтрелы ||
!this.времяПриземления ||
Math.abs(this.времяСтрелы - this.времяПриземления) > 0.00001 ||
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
) {
return;
}
this.подкинули = true;
Matter.Body.setVelocity(
мир.объекты.тела.стрела,
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
);
if (мир.игрок.приземление.скорость > 16)
{
this.закинули = true;
}
};
// Конструктор.
this.создать();
}
мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
мир.подкидываниеСтрелы.завершить = function() {
мир.подкидываниеСтрелы = null;
/**/var audio = new Audio("р/звуки/543927__eminyildirim__pistol-gun-cocking.wav");
/**/audio.play();
/**/console.debug("воспроизвели аудио");
};
// // // //
// Отладка событий
// // // //
function ОтладкаСобытий() {
this.обработатьСобытие = function(событие) {
if (событие == "закинули стрелу")
{
console.debug("событие", событие);
}
};
// Конструктор.
мир.события.подписать(this);
}
мир.отладкаСобытий = new ОтладкаСобытий();