Matter.JS检测两个静态传感器之间的碰撞

时间:2019-01-26 14:26:54

标签: javascript react-native p5.js matter.js

我正在尝试向游戏世界添加一些可以移动的圆形物体。 而且我需要检测它们何时发生碰撞,还要让它们通过。

我尝试使圆圈为isSensor和Static-未检测到碰撞。 我试图使它们成为isSensor和NO Static-可以检测到碰撞,但是它们掉入了重力/物理学的世界巨石。 我尝试删除物理场,但未检测到碰撞。

该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以将自己的碰撞检测与勾股定理一起使用,如下所示:

Events.on(engine, 'beforeUpdate', function() {
    var circleAX = circleA.position.x;
    var circleAY = circleA.position.y;
    var circleBX = circleB.position.x;
    var circleBY = circleB.position.y;

    var dx = circleAX - circleBX;
    var dy = circleAY - circleBY;
    var dist = Math.sqrt(dy*dy + dx*dx);

    //substitute radiusA and radiusB for the radiuses of the circles
    if (dist < radiusA+radiusB) {
        //Collision
    }
});

要确保它们不会发生碰撞,请使用碰撞过滤器。

如果您要追求高效率,那不是最好的方法。但是,除非您要检查数百个物体是否发生碰撞,否则它不应使游戏速度减慢至足以产生真正的变化。