SpriteBuiderはレイアウトを変更した後、Appはエラーコードを実行して検査を行います.
1554 ワード
もとはステージ全体のシーンはGameScene.cbの中に置いていましたが、専門のLevel.cbに移ったほうがいいと思います.
移動後にコンパイル運転します.Playerの腕を動かして弾丸を発射すると、Xcodeがエラーを報告します.
レイアウトを移動した後、元の物理オブジェクトはGameScene.cbではなくなりました.元の参照はまだありますか?GameSceneのローディング方法には以下のような断言が追加されています.
移動後にコンパイル運転します.Playerの腕を動かして弾丸を発射すると、Xcodeがエラーを報告します.
g due to Chipmunk error: Body's angular velocity is invalid.
Failed condition: body->w == body->w && cpfabs(body->w) != INFINITY
Source:/Users/pp/src/xcode/ios_src/ShootBall.spritebuilder/Source/libs/cocos2d-iphone/external/Chipmunk/src/cpBody.c:123
検査の結果、エラーはtouchイベントで発生しましたが、エラー情報から実際の原因を推測するのは難しいです.レイアウトを移動した後、元の物理オブジェクトはGameScene.cbではなくなりました.元の参照はまだありますか?GameSceneのローディング方法には以下のような断言が追加されています.
NSAssert(_physicWorld, @"physicWorld must not nil");
アプリをコンパイルして実行したら、やはりエラーが発生しました.検索には、物理的なオブジェクトのコードを参照する必要があります.弾丸初期化には、次のような句があります.[_physicWorld addChild:bullet];
このことから分かるように、銃弾の対象が物理的なオブジェクトに正確に追加されていないため、エラーが発生しました.原因を知るのは簡単です.物理的なオブジェクトを探すコードを追加すればいいです._physicWorld = (CCPhysicsNode*)[self getChildByName:@"physicWorld" recursively:YES];