0

我对 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。

4

1 回答 1

1

Chipmunk 实际上并不直接与 Cocos2D 交互,它只是一个物理引擎。因此,如果它在 cpSpaceStep() 中使用 EXC_BAD_ACCESS 崩溃,那几乎可以肯定是因为您在某个地方给了 Chipmunk 一个悬空指针,或者有另一个内存错误破坏了 Chipmunk 正在使用的数据。

如果将其编译为调试,它究竟在哪里崩溃?您是否使用任何回调并确定其中一个没有发生?

于 2012-07-28T18:38:16.577 回答