我是Box2D的新手,目前正在尝试使用b2Contact
检测某个对象(Ball)是否设法通过另一个对象(目标)。为此,我实施了b2ContactListener
,一切正常。
然而,我想知道,有没有办法让我设置只检测一个方向的碰撞?例如,仅从左到右,如果球从右向左穿过,则不会计算碰撞。我希望从文档中可以看到here中的类似内容。
在文档中,他们通过使用对象中的点来检测碰撞的方向
int numPoints = contact->GetManifold()->pointCount;
b2WorldManifold worldManifold;
contact->GetWorldManifold( &worldManifold );
但是,对于我的情况,我使用b2CircleShape
作为我的球对象,它间接地将numPoints返回为0.因此,我无法使用上述方法检测到碰撞。有什么方法可以检测到圆圈中的点数吗?或者有什么方法可以检测到碰撞的方向?
答案 0 :(得分:0)
也许这会对你有帮助。
b2WorldManifold manifold;
contact->GetWorldManifold(&manifold);
manifold.normal.Normalize();
if(manifold.normal.x > 0){
[...]
}