1

iOS7 スプライト キット プロジェクトで物理ワールドを設定しようとすると、次のエラーが表示されます。

Assertion failed: (count >= 3), function CreateLoop, file /SourceCache/PhysicsKit/PhysicsKit-4.6/PhysicsKit/Box2D/Collision/Shapes/b2ChainShape.cpp, line 35.

奇妙なことに、プロジェクトに新しいシーンを追加する前に、使用しているコードが機能していました。プロジェクトが正しく実行されていた最後の既知の時点にプロジェクトを戻しましたが、まだ機能しません。物理ワールドを削除すると、プロジェクトがビルドされます。

(SKNode*) myWorld = [SKNode node];
[self addChild:myWorld];

map = [SKSpriteNode spriteNodeWithImageNamed:@"background1"];
map.position = CGPointMake(0.0, 0.0);
[myWorld addChild:map];

//Setup physics
self.physicsWorld.gravity = CGVectorMake(0.0, 0.5);
self.physicsWorld.contactDelegate = self;

CGRect worldFrame = CGRectMake(map.frame.origin.x, map.frame.origin.y-1150, map.frame.size.width, map.frame.size.height + 2000);

myWorld.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:map.frame];
myWorld.physicsBody.categoryBitMask = wallCategory;

実行しようとするとプログラムが終了します…</p>

myWorld.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:map.frame];

このコードを新しいプロジェクトに入れると、問題なく動作します。私のプロジェクトで何が起こっているのか、それを修正する方法について何か考えはありますか?

4

1 に答える 1

1

マップが非 nil であることを確認してください。このエラーは、map が nil であるか、フレームに幅/高さがないために、ゼロの四角形を渡した場合に四角形でのみ発生する可能性のある十分な頂点 (最小 3 つ) がないことを示しています。

于 2013-12-06T06:39:00.447 に答える