2013-12-06 5 views
1

iOS7 Sprite 키트 프로젝트에서 물리 세계를 설정하려고 할 때 다음과 같은 오류가 발생합니다.bodyWithEdgeLoopFromRect 어설 션이 실패했습니다.

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]; 

은, 그냥 잘 작동합니다. 내 프로젝트에서 어떤 일이 일어나고 있는지, 그리고 어떻게 해결할 수 있는지 생각해보십시오.

+0

NSException에 대한 기호 중단 점을 추가하고 종료 이유를 확인하십시오. 또한 충돌하는 행에 중단 점을 추가하고 작성한 모든 오브젝트의 값을보십시오. 왜 worldFrame을 사용하지 않으셨습니까? –

답변

1

지도가 아닌 것으로 확인하십시오. 이 오류는지도가 0이거나 프레임의 너비/높이가 없기 때문에 rect가 0 인 경우 rect에서만 발생하는 정점이 충분하지 않음을 나타냅니다 (최소 3 개).

+0

다른 방법으로 실수로지도의 크기를 0으로 설정했습니다. 고마워! –

관련 문제