// // // // // Основа избы // // // // мир.разобрать({ заголовок: "Колобку здесь быть", изображения: { дом: { ширина: 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, }, }, }, }); // // // // // Подкидывание стрелы // // // // function ПодкидываниеСтрелы(мир) { this.создать = function() { мир.события.подписать(this); }; this.обработатьСобытие = function(событие) { console.debug("ИГР ПодкидываниеС.обработатьС", событие); }; // Конструктор. this.создать(); } мир.подстр = new ПодкидываниеСтрелы(мир); мир.подкидываниеСтрелы = { сенсор: 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, }, }, }, лук: { x: 1250, y: 200, ширина: 100, вид: { background: "url(р/отладка/основа.jpg)", display: "none", }, физика: { isStatic: true, collisionFilter: { category: 4, }, }, }, }, столкновения: { стрела: { объекты: ["кирпич", "сенсор"], событие: "сенсор стрелы", }, }, действия: { сенсорСтрелы: [ () => { мир.подкидываниеСтрелы.сенсор = мир.физика.движок.timing.timestamp; }, "подкинутьСтрелу", ], игрокНачалПрыжок: [ () => { мир.подкидываниеСтрелы.сенсор = null; мир.подкидываниеСтрелы.стрела = null; мир.подкидываниеСтрелы.подкинули = false; }, ], игрокПриземлился: [ () => { мир.подкидываниеСтрелы.стрела = мир.физика.движок.timing.timestamp; }, "подкинутьСтрелу", ], подкинутьСтрелу: [ () => { if ( мир.подкидываниеСтрелы.подкинули || !мир.подкидываниеСтрелы.стрела || !мир.подкидываниеСтрелы.сенсор || Math.abs(мир.подкидываниеСтрелы.стрела - мир.подкидываниеСтрелы.сенсор) > 0.00001 || Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001 ) { return; } мир.подкидываниеСтрелы.подкинули = true; Matter.Body.setVelocity( мир.объекты.тела.стрела, { x: 0, y: -мир.игрок.приземление.скорость * 1.2 } ); }, ], }, маскиПрыжков: { стрела: { объект: "стрела", скорость: -1, маски: [0, 2|4] }, }, });