如何在 matter.js 中启用碰撞?

问题描述 投票:1回答:1

我正在尝试 物质.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。我怎么才能让它们相撞呢?我看到我可以在身体的选项中增加刚度,但我不认为这对我有什么帮助,如果它们一开始就不相撞的话。

javascript p5.js matter.js
1个回答
1
投票

我刚刚发现了问题:translate函数永远不会检查碰撞。相反,我使用了setVelocity函数,每一帧都更新引擎。

Matter.Engine.update(engine);
Matter.Body.setVelocity(m1,v1);

我还不得不关闭设置中的重力。

engine.world.gravity.y = 0;
© www.soinside.com 2019 - 2024. All rights reserved.