Box2D检测圆形物体的单向碰撞

时间:2016-01-04 16:11:17

标签: c++ listener box2d collision

我是Box2D的新手,目前正在尝试使用b2Contact检测某个对象(Ball)是否设法通过另一个对象(目标)。为此,我实施了b2ContactListener,一切正常。

然而,我想知道,有没有办法让我设置只检测一个方向的碰撞?例如,仅从左到右,如果球从右向左穿过,则不会计算碰撞。我希望从文档中可以看到here中的类似内容。

在文档中,他们通过使用对象中的点来检测碰撞的方向

int numPoints = contact->GetManifold()->pointCount;
b2WorldManifold worldManifold;
contact->GetWorldManifold( &worldManifold );

但是,对于我的情况,我使用b2CircleShape作为我的球对象,它间接地将numPoints返回为0.因此,我无法使用上述方法检测到碰撞。有什么方法可以检测到圆圈中的点数吗?或者有什么方法可以检测到碰撞的方向?

1 个答案:

答案 0 :(得分:0)

也许这会对你有帮助。

b2WorldManifold manifold;
contact->GetWorldManifold(&manifold);
manifold.normal.Normalize();
if(manifold.normal.x > 0){
   [...]
}