diff --git a/160.объекты.js b/160.объекты.js index 50c88fa..b456e7c 100644 --- a/160.объекты.js +++ b/160.объекты.js @@ -50,6 +50,10 @@ { var тело = мир.объекты.тела[имя]; var элемент = мир.объекты.элементы[имя]; + if (!тело || !элемент) + { + continue; + } var засинхрили = мир.синхронизироватьЭлементТело(элемент, тело); // Учесть значения transform из JSON-JS. diff --git a/400.столкновения.js b/400.столкновения.js index 45acaf6..d800dc3 100644 --- a/400.столкновения.js +++ b/400.столкновения.js @@ -55,7 +55,6 @@ var пара = пары[номер]; var п1 = мир.объекты.имена[пара.bodyA.id]; var п2 = мир.объекты.имена[пара.bodyB.id]; - if ( !((имя1 == п1) && (имя2 == п2)) && !((имя1 == п2) && (имя2 == п1)) diff --git a/667.ручноетело.js b/667.ручноетело.js index d67f28c..af36ef3 100644 --- a/667.ручноетело.js +++ b/667.ручноетело.js @@ -30,7 +30,6 @@ function РучноеТело(события) { // 1. this.тело1 = Matter.Bodies.rectangle(125, 300, 40, 40, { isSensor: true }); - //Matter.Composite.add(мир.физика.движок.world, this.тело1); this.элемент1 = document.createElement("div"); document.getElementById("корень").appendChild(this.элемент1); @@ -43,8 +42,7 @@ function РучноеТело(события) { this.элемент1.style.setProperty("z-index", "100"); // 2. - this.тело2 = Matter.Bodies.rectangle(55, 300, 40, 40, {}); - //Matter.Composite.add(мир.физика.движок.world, this.тело2); + this.тело2 = Matter.Bodies.rectangle(55, 300, 40, 40, { inertia: Infinity }); this.элемент2 = document.createElement("div"); document.getElementById("корень").appendChild(this.элемент2); @@ -56,12 +54,25 @@ function РучноеТело(события) { this.элемент2.style.setProperty("background", "url(р/отладка/основа.jpg)"); this.элемент2.style.setProperty("z-index", "100"); + /* + Matter.Composite.add(мир.физика.движок.world, this.тело1); + Matter.Composite.add(мир.физика.движок.world, this.тело2); + мир.объекты.тела["рт"] = this.тело2; + this.тело = this.тело2; + */ + // Compound. this.тело = Matter.Body.create({ parts: [this.тело1, this.тело2], inertia: Infinity, }); Matter.Composite.add(мир.физика.движок.world, this.тело); + мир.объекты.тела["рт"] = this.тело; + + мир.объекты.тела["рт1"] = this.тело1; + мир.объекты.имена[this.тело1.id] = "рт1"; + мир.объекты.тела["рт2"] = this.тело2; + мир.объекты.имена[this.тело2.id] = "рт2"; }; this.обновить = function() diff --git a/800.пример.json.js b/800.пример.json.js index 20becfa..bbad794 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -115,48 +115,36 @@ 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], }, }, - */ звуки: { прыжокИгрока: { события: ["игрок начал прыжок"], @@ -459,7 +447,7 @@ function ПодкидываниеСтрелы() { function ОтладкаСобытий() { this.обработатьСобытие = function(событие) { - if (событие == "игрокПаук1") + if (событие.startsWith("игрокПаук")) { console.debug("событие", событие); } @@ -497,6 +485,18 @@ console.debug("событие", событие); объекты: ["кирпич", "паук1"], событие: "игрокПаук1", }, + проверкаСенсораИгрокаРТ: { + объекты: ["рт", "паук1"], + событие: "игрокПаукРТ", + }, + проверкаСенсораИгрокаРТ1: { + объекты: ["рт1", "паук1"], + событие: "игрокПаукРТ1", + }, + проверкаСенсораИгрокаРТ2: { + объекты: ["рт2", "паук1"], + событие: "игрокПаукРТ2", + }, }, движение: { паук1: {