2

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

但是,我不知道如何判断两个物体在发生碰撞后是否相互接触。有没有办法做到这一点?

(在我的特殊情况下,我希望一个球只有在它接触到一块特定的地面时才会跳跃。)

4

4 回答 4

5

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

Matter.SAT.collides(playerObject, groundObject).collided // returns either true or false depending on if the two objects are colliding 
于 2021-01-30T18:03:09.733 回答
1

使用传感器。

物体本身之间的物体检测根本不是很好,所以至少在你想要检测碰撞的物体之一上放置一个传感器。要么将其牢固地连接到您的身体上,要么找到某种方法对其进行更新,以便它始终移动到您想要跟踪的身体位置并像那样进行碰撞检测。

于 2018-01-16T06:25:57.583 回答
0

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

参考文件

Matter.Detector.canCollide(filterA, filterB)

此方法返回一个布尔值,说明它是否处于碰撞中。

于 2018-01-04T05:53:19.323 回答
0

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

if (Matter.Collision.collides(a, b) != null) {
    // collision happened
}
于 2022-01-26T08:10:26.377 回答