bodyWithEdgeLoopF​​romRect断言失败

时间:2013-12-06 01:27:21

标签: ios7 sprite-kit skphysicsbody

尝试在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;

程序在尝试执行时终止...

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

如果我将此代码放入新项目中,它的工作正常。关于我的项目发生了什么以及如何解决它的想法?

1 个答案:

答案 0 :(得分:1)

检查地图是否为零。该错误表明没有足够的顶点(最小3个),如果传入零矩形,则只能使用矩形,因为map为nil或帧没有宽度/高度。