我对Cocos2d和Box2d非常有经验,并且想尝试使用Chipmunk。只要我将精灵添加到helloworldlayer,一切正常,但如果我添加另一个图层并尝试将精灵添加到该新图层,它会崩溃。
在主层更新中的cpSpaceStep函数调用中,它失败并显示EXC_BAD_ACCESS。
-(void) update:(ccTime) delta
{
// Should use a fixed size step based on the animation interval.
int steps = 2;
CGFloat dt = [[CCDirector sharedDirector] animationInterval]/(CGFloat)steps;
for(int i=0; i<steps; i++){
HERE -> cpSpaceStep(space_, dt);
}
}
编辑: 问题似乎是关于精灵批处理节点而不是CCLayers。
答案 0 :(得分:1)
Chipmunk实际上并不直接与Cocos2D交互,它只是一个物理引擎。因此,如果它在cpSpaceStep()中使用EXC_BAD_ACCESS崩溃,那几乎可以肯定是因为你在某处给了Chipmunk一个悬空指针,或者有另一个内存错误,它破坏了Chipmunk正在使用的数据。
如果将其编译为debug,它在哪里崩溃?您是否正在使用任何回调并且确定它不会发生在其中之一?