我正在尝试用它来Matter.Query.region查看我的游戏中的角色是否接地。但是,当我尝试region使用我创建的边界对象(以游戏中显示的点显示)运行时,它不会出现任何碰撞,即使它明显与其他物体相交。
代码:
let Engine = Matter.Engine,
Runner = Matter.Runner,
World = Matter.World,
Bodies = Matter.Bodies,
Body = Matter.Body,
Composite = Matter.Composite;
let engine;
let boxA;
let boxB;
let platforms = [];
function setup() {
createCanvas(550, 400);
// create an engine
engine = Engine.create();
// create two boxes and a ground
boxA = Bodies.rectangle(275, 200, 80, 80, {
mass: 20
});
platforms.push(boxA);
boxB = Bodies.rectangle(300, 50, 80, 80, {
mass: 20
});
Body.setInertia(boxB, Infinity);
ground = Bodies.rectangle(250, …Run Code Online (Sandbox Code Playgroud)我想在 Matter.js 中将自定义 HTML 元素渲染为 Bodies。我在 React 中使用它,这增加了一些复杂性,但这与我的问题无关。
我搜索了很多,我发现的唯一一个例子就是这里的这个,它似乎用于querySelector选择 HTML 代码中的元素,然后以某种方式在矩形形状内使用它们。
似乎正在完成这项工作的部分如下:
var bodiesDom = document.querySelectorAll('.block');
var bodies = [];
for (var i = 0, l = bodiesDom.length; i < l; i++) {
var body = Bodies.rectangle(
VIEW.centerX,
20,
VIEW.width*bodiesDom[i].offsetWidth/window.innerWidth,
VIEW.height*bodiesDom[i].offsetHeight/window.innerHeight
);
bodiesDom[i].id = body.id;
bodies.push(body);
}
World.add(engine.world, bodies);
Run Code Online (Sandbox Code Playgroud)
(VIEW那里的变量可能只是随机数,因为它们定义了形状)
但是,我无法理解如何在 Bodies 矩形内传递 HTML 元素,如上面的示例所示。
理想情况下,我希望有复杂的 HTML 元素与物理世界交互(比如带有按钮的小盒子等)。
关于如何实现这一目标有什么想法吗?或者,您能解释一下示例中使用的似乎已成功实现的方法吗?
我有一些用 Matter.js 创建的矩形,如下所示:Bodies.rectangle (getRandomInt (200,400), 50,140,50, {restitution: 0.7, timeScale: 0.5})
但现在我需要在该矩形内添加文本。我怎么能这么做呢?文档对于此类操作并不清楚