如何判断两个物体是否接触 matter.js

How to tell if two bodies are touching with matter.js

我正在使用 matter.js 作为物理引擎,我发现我可以检测碰撞。

但是,我不知道如何判断碰撞发生后两个物体是否相互接触。有什么办法吗?

(在我的特殊情况下,我希望球仅在接触特定地面时才会跳跃。)

我认为他们有内置的碰撞检测功能 api。

reference documentation

Matter.Detector.canCollide(filterA, filterB)

这个方法returns一个布尔值,表示它是否在碰撞中。

使用传感器。

object 之间的 object 检测本身并不是很好,因此至少在您想要检测碰撞的事物之一上放置一个传感器。要么将它严格地附加到您的 body 上,要么找到一些方法来更新它,以便它始终移动到您想要跟踪的 body 的位置并像那样进行碰撞检测。

这是一个很晚的答案,我知道你已经接受了一个答案,但我只是发现了这个非常简单的解决方案。 Matter.js 有一个名为 SAT 的模块,它检测与分离轴定理的冲突。它的单一方法可用于检测两个对象是否发生碰撞:

Matter.SAT.collides(playerObject, groundObject).collided // returns either true or false depending on if the two objects are colliding 

使用Matter.Collision.collides并检查它是否为空。

if (Matter.Collision.collides(a, b) != null) {
    // collision happened
}