我正在尝试 物质.js 关于 p5.js.我想做一个简单的Top Down模拟,当身体试图移动时,会相互碰撞。
这是我的代码。
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);
}
我的意图是让身体m1在试图向他的方向移动时,推动身体m2。不幸的是,m1只是穿过m2。我怎么才能让它们相撞呢?我看到我可以在身体的选项中增加刚度,但我不认为这对我有什么帮助,如果它们一开始就不相撞的话。
我刚刚发现了问题:translate函数永远不会检查碰撞。相反,我使用了setVelocity函数,每一帧都更新引擎。
Matter.Engine.update(engine);
Matter.Body.setVelocity(m1,v1);
我还不得不关闭设置中的重力。
engine.world.gravity.y = 0;