CCPhysicsSprite가 CCSprite와 몇 가지면에서 다르다는 것을 깨달았습니다. 예를 들어, 스프라이트의 위치를 설정하기 전에 본문을 설정해야합니다. 나는 그것이 신체를 파괴하려고 할 때 EXC_BAD_ACCESS 오류를 일으키는 이러한 차이 중 하나라고 생각합니다. update 메서드에서 scheduleSprite 메서드를 호출합니다. CCPhysicsSprite로 몸체를 파괴하는 법
-(void)scheduleSprite {
if ([testSprite physicsSprite].b2Body != NULL) {
b2Vec2 force = b2Vec2(-5, 10.0 * [testSprite physicsSprite].b2Body->GetMass());
[testSprite physicsSprite].b2Body->ApplyForce(force, [testSprite physicsSprite].b2Body->GetWorldCenter());
if ([testSprite physicsSprite].position.x < 0) {
world->DestroyBody([testSprite physicsSprite].b2Body);
[testSprite physicsSprite].b2Body = NULL;
}
}
}
가 나는 EXC_BAD_ACCESS 클래스
CCPhysicsSprite.mm
감사 내에서
-(CGAffineTransform) nodeToParentTransform
방법에
b2Vec2 pos = _b2Body->GetPosition();
라인 가리키는 얻을. 당신이 body
을 파괴에도 불구하고
[EXC \ _BAD \ _ACCESS 오류 및 box2d 본문을 직선 수평선으로 이동할 때 이상한 동작이 중복 될 수 있음] (http://stackoverflow.com/questions/16055026/exc-bad-access-error-and-strange- behavior-when-moving-box2d-body-in-straight-ho) – Morion