【问题标题】:How to enable collisions in matter.js?如何在 matter.js 中启用碰撞?
【发布时间】:2020-04-27 16:24:03
【问题描述】:

我正在 p5.js 上试用 matter.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】:

    我刚刚发现了问题:翻译功能永远不会检查碰撞。相反,我使用了 setVelocity 函数并每帧更新引擎。

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

    我还必须在设置中关闭重力。

    engine.world.gravity.y = 0;
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      相关资源
      最近更新 更多