508 lines
14 KiB
JavaScript
508 lines
14 KiB
JavaScript
// // // //
|
||
// Основа избы
|
||
// // // //
|
||
|
||
|
||
мир.разобрать({
|
||
заголовок: "Колобку здесь быть",
|
||
изображения: {
|
||
дом: {
|
||
ширина: 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,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
звуки: {
|
||
изба: {
|
||
события: ["вошли в избу"],
|
||
файл: "р/звуки/387922__setuniman__scheming-1o95.mp3",
|
||
повторять: true,
|
||
останов: ["покинули избу"],
|
||
},
|
||
},
|
||
});
|
||
|
||
|
||
|
||
// // // //
|
||
// Игрок
|
||
// // // //
|
||
|
||
|
||
мир.разобрать({
|
||
изображения: {
|
||
колобок: {
|
||
ширина: 70,
|
||
высота: 70,
|
||
вид: {
|
||
background: "url(р/колобок/колобок_неподвижен.png)",
|
||
//"z-index": 10,
|
||
},
|
||
},
|
||
},
|
||
объекты: {
|
||
кирпич: {
|
||
x: 1170,
|
||
y: 350,
|
||
высота: 20,
|
||
ширина: 40,
|
||
вид: {
|
||
background: "url(р/отладка/основа.jpg)",
|
||
//display: "none",
|
||
},
|
||
физика: {
|
||
isStatic: false,
|
||
inertia: Infinity,
|
||
},
|
||
},
|
||
/*
|
||
проверка: {
|
||
x: 1270,
|
||
y: 350,
|
||
высота: 40,
|
||
ширина: 40,
|
||
вид: {
|
||
background: "url(р/отладка/основа.jpg)",
|
||
},
|
||
физика: {
|
||
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;
|
||
};
|
||
|
||
|
||
// Запустить звук избы
|
||
мир.события.уведомить("вошли в избу");
|
||
|
||
|
||
|
||
// // // //
|
||
// Отладка событий
|
||
// // // //
|
||
|
||
|
||
function ОтладкаСобытий() {
|
||
this.обработатьСобытие = function(событие) {
|
||
if (событие == "игрокПаук1")
|
||
{
|
||
console.debug("событие", событие);
|
||
}
|
||
};
|
||
|
||
// Конструктор.
|
||
мир.события.подписать(this);
|
||
}
|
||
|
||
мир.отладкаСобытий = new ОтладкаСобытий();
|
||
|
||
|
||
|
||
// // // //
|
||
// Пауки
|
||
// // // //
|
||
|
||
мир.разобрать({
|
||
объекты: {
|
||
паук1: {
|
||
x: 680,
|
||
y: 300,
|
||
ширина: 30,
|
||
вид: {
|
||
background: "url(р/животные/паук.png) no-repeat scroll 0% 0% / contain",
|
||
},
|
||
физика: {
|
||
isStatic: false,
|
||
isSensor: true,
|
||
},
|
||
},
|
||
},
|
||
столкновения: {
|
||
игрокПаук1: {
|
||
объекты: ["кирпич", "паук1"],
|
||
событие: "игрокПаук1",
|
||
},
|
||
},
|
||
движение: {
|
||
паук1: {
|
||
объекты: ["паук1"],
|
||
скорость: [0.7, 1],
|
||
x: [610, 1080],
|
||
y: [350, 450],
|
||
},
|
||
},
|
||
});
|