// // // // // Основа избы // // // // мир.разобрать({ заголовок: "Колобку здесь быть", изображения: { дом: { ширина: 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.5], клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"], }, слежение: { колобок: { объект: "кирпич", изображение: "колобок", смещение: [-35, -65], скорость: 1, }, камера: { объект: "кирпич", скорость: 0.1, }, }, маскиПрыжков: { игрок: { объект: "кирпич", скорость: -1, маски: [1, 1|2], }, }, }); // // // // // Платформы и объекты печи // // // // мир.разобрать({ объекты: { фундаментПечи: { 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] }, }, }); 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 (событие == "закинули стрелу") { console.debug("событие", событие); } }; // Конструктор. мир.события.подписать(this); } мир.отладкаСобытий = new ОтладкаСобытий();