Chipmunk僵尸物理对象的出现和解决(六)

时间:2022-04-19 22:47:41
Chipmunk僵尸物理对象的出现和解决(六)

既然出现了这个问题下面就是如何找到原因.

因为该问题不是每次都出现,偶尔反弹棒碰到五角星时才会多出一个僵尸棒,现象比较随机,较难悉知具体原因.

有时多次触碰又没有出现问题,有时短时间内每次触碰都出现问题.开始我以为是stick自身从parent删除时多次重入导致.于是希望定时将多余的stick删除掉,在GameScene中每隔5秒调用一次:

-(void)clearInvalidSticks{
    @synchronized(self){
        NSInteger stickCount = 0;
        for (CCNode *node in _physicsWorld.children) {
            if (![node isMemberOfClass:[Brick class]] &&
                ![node isMemberOfClass:[Star class]]) {
                stickCount++;
            }
        }
        CCLOG(@"now total %d stick in Level",stickCount);
    }
}

无法将stick过滤出来,无论出现多少个僵尸stick,stickCount数字保持恒定.这时我才意识到这些stick不是正常的对象.它们存在于物理世界,但你却找不到它们,就像物质”以太”一样.