我已经意识到 CCPhysicsSprite 在某些方面与 CCSprite 不同。例如,您必须在设置精灵的位置之前设置身体。我相信当我尝试破坏身体时,这些差异之一会导致 EXC_BAD_ACCESS 错误。我在 update 方法中调用 scheduleSprite 方法。
-(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
b2Vec2 pos = _b2Body->GetPosition();
在里面
-(CGAffineTransform) nodeToParentTransform
方法,在类中
CCPhysicsSprite.mm
谢谢。