如何在 matter.js 中启用碰撞?
How to enable collisions in matter.js?
我正在 matter.js p5.js 上试用。
我正在尝试制作一个简单的自上而下模拟,其中身体在尝试移动时相互碰撞。
这是我的代码:
let engine,world;
function setup() {
createCanvas(400, 400);
engine = Matter.Engine.create();
world = engine.world;
m1 = Matter.Bodies.rectangle(50,50,50,50);
m2 = Matter.Bodies.rectangle(100,50,50,50);
Matter.World.add(world,m1);
Matter.World.add(world,m2);
}
function draw() {
background(220);
Matter.Body.translate(m1,{x: 1,y: 0});
pos1 = m1.position;
pos2 = m2.position;
rectMode(CENTER);
rect(pos1.x,pos1.y,50,50);
rect(pos2.x,pos2.y,50,50);
}
我的意图是让 body m1 在试图朝他的方向移动时推动 body m2。不幸的是,m1 正通过 m2。我如何让它们发生碰撞?
我已经看到我可以为 body 的选项增加刚度,但我认为如果它们一开始就没有发生碰撞,那对我没有帮助。
我刚发现问题:翻译函数永远不会检查碰撞。相反,我使用了 setVelocity 函数并每帧更新引擎。
Matter.Engine.update(engine);
Matter.Body.setVelocity(m1,v1);
我还必须在设置中关闭重力。
engine.world.gravity.y = 0;
我正在 matter.js p5.js 上试用。 我正在尝试制作一个简单的自上而下模拟,其中身体在尝试移动时相互碰撞。
这是我的代码:
let engine,world;
function setup() {
createCanvas(400, 400);
engine = Matter.Engine.create();
world = engine.world;
m1 = Matter.Bodies.rectangle(50,50,50,50);
m2 = Matter.Bodies.rectangle(100,50,50,50);
Matter.World.add(world,m1);
Matter.World.add(world,m2);
}
function draw() {
background(220);
Matter.Body.translate(m1,{x: 1,y: 0});
pos1 = m1.position;
pos2 = m2.position;
rectMode(CENTER);
rect(pos1.x,pos1.y,50,50);
rect(pos2.x,pos2.y,50,50);
}
我的意图是让 body m1 在试图朝他的方向移动时推动 body m2。不幸的是,m1 正通过 m2。我如何让它们发生碰撞? 我已经看到我可以为 body 的选项增加刚度,但我认为如果它们一开始就没有发生碰撞,那对我没有帮助。
我刚发现问题:翻译函数永远不会检查碰撞。相反,我使用了 setVelocity 函数并每帧更新引擎。
Matter.Engine.update(engine);
Matter.Body.setVelocity(m1,v1);
我还必须在设置中关闭重力。
engine.world.gravity.y = 0;