From b6be9658a5a5c99a585a8feed41aa49011b7e18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 11 Aug 2021 15:01:46 +0300 Subject: [PATCH] constraint + sensor --- 666.ограничитель.js | 34 +++++++++++++++++++++++++++++++++ 700.пуск.js | 2 ++ 800.пример.json.js | 14 ++++++++++++++ index.html | 1 + 4 files changed, 51 insertions(+) create mode 100644 666.ограничитель.js diff --git a/666.ограничитель.js b/666.ограничитель.js new file mode 100644 index 0000000..294e444 --- /dev/null +++ b/666.ограничитель.js @@ -0,0 +1,34 @@ +function Ограничитель() { + this.создать = function() + { + this.ограничитель = null; + }; + + this.обновить = function() + { + if (this.ограничитель || !мир.игрок.тело) + { + return; + } + this.создатьОграничитель(); + }; + + this.создатьОграничитель = function() + { + var объект = мир.объекты.тела["проверка"]; + var x = мир.игрок.тело.position.x; + var y = мир.игрок.тело.position.y - 30; + Matter.Body.setPosition(объект, { x: x, y: y }); + this.ограничитель = Matter.Constraint.create({ + bodyA: мир.игрок.тело, + bodyB: объект, + stiffness: 1, + }); + Matter.Composite.add(мир.физика.движок.world, this.ограничитель); + console.debug("создан ограничитель"); + }; + + + // Конструктор. + this.создать(); +} diff --git a/700.пуск.js b/700.пуск.js index b400655..e4eb8cc 100644 --- a/700.пуск.js +++ b/700.пуск.js @@ -6,11 +6,13 @@ function Пуск() мир.столкновения.создать(); мир.звуки = new Звуки(мир.ключники, мир.события); мир.движение = new Движение(мир.ключники); + /**/мир.ограничитель = new Ограничитель(); this.обновить(); }; this.обновить = function() { + /**/мир.ограничитель.обновить(); мир.физика.обновить(); мир.объекты.обновить(); мир.игрок.обновить(); diff --git a/800.пример.json.js b/800.пример.json.js index 94770d7..ac12bcc 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -115,6 +115,20 @@ inertia: Infinity, }, }, + проверка: { + x: 1270, + y: 350, + высота: 40, + ширина: 40, + вид: { + background: "url(р/отладка/основа.jpg)", + }, + физика: { + isStatic: false, + isSensor: true, + inertia: Infinity, + }, + }, }, игрок: { объект: "кирпич", diff --git a/index.html b/index.html index 33bde83..16fe9ef 100644 --- a/index.html +++ b/index.html @@ -79,6 +79,7 @@ +