1

尝试在我的 iOS7 Sprite 工具包项目中设置物理世界时,我收到以下错误。

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

检查地图是否为非零。该错误表明没有足够的顶点(最少 3 个),如果您传入零矩形,那么只有在矩形中才会发生这种情况,因为地图为零或框架没有宽度/高度。

于 2013-12-06T06:39:00.447 回答