既然出现了这个问题下面就是如何找到原因.
因为该问题不是每次都出现,偶尔反弹棒碰到五角星时才会多出一个僵尸棒,现象比较随机,较难悉知具体原因.
有时多次触碰又没有出现问题,有时短时间内每次触碰都出现问题.开始我以为是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不是正常的对象.它们存在于物理世界,但你却找不到它们,就像物质”以太”一样.