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 と直接対話するのではなく、単なる物理エンジンです。したがって、EXC_BAD_ACCESS を使用して cpSpaceStep() でクラッシュする場合は、ほぼ確実に、Chipmunk にどこかにダングリング ポインターを与えたか、Chipmunk が使用しているデータを破損する別のメモリ バグがあるためです。

デバッグとしてコンパイルすると、正確にはどこでクラッシュしますか? コールバックを使用していて、それらのいずれかで発生していないことを確認していますか?

于 2012-07-28T18:38:16.577 に答える