Box2D碰撞检测问题?

时间:2012-01-29 22:22:31

标签: ios cocos2d-iphone collision-detection box2d

我使用的是一个非常简单的b2ContactListener。但是,当我的对象发生碰撞时,物理上会发生一次碰撞的多次回调。有没有办法修改它或添加一些检查,以便一次碰撞只有一个回调物理?几个星期以来,我一直在努力解决这个问题,我似乎无法弄清楚这一点:(

任何人都可以提供任何提示或建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我在我的对象上使用bool标志。

联系人被解雇时:

如果已经设置了标志=只是忽略 else设置标志并将对象添加到doSomethingNowWithThis列表中。

这样只有一个联系人设置标志,其余的被忽略。防止我过度删除。

可能有更好的方法,但这对我有用。

在iOS中使用levelhelper的示例。

   //I register a laser to hit the roof
   [lh registerBeginOrEndCollisionCallbackBetweenTagA:PLAYERFIRE 
                                               andTagB:ROOF 
                                            idListener:self 
                                           selListener:@selector(flagPartAToDie:)];

    //Then it calls this
   -(void)flagPartAToDie:(LHContactInfo*)contact {
    MyUserData* myud;
    LHSprite* part = [contact spriteA];
    myud = (MyUserData*) part.userData;
    if (!myud.DeleteMe) {
        myud.DeleteMe = YES;
        [deadParts addObject: part];            
    }    
 }