2013-06-13 3 views
0

Я бросаю объект (box2d), но он дает мне ошибку на CGRect этого объекта, когда я пытаюсь обнаружить столкновение. см ниже изображенияEXC_BAD_ACCESS cocos2d - box2d

enter image description here

и это, как я творю тело объектного

-(void) createObject 
{ 
    freeBodySprite = [CCSprite spriteWithFile:@"object.png"]; 
    //freeBodySprite.position = ccp(100, 300); 
    [self addChild:freeBodySprite z:2 tag:6]; 

    CGPoint startPos = CGPointMake(150, 320/1.25); 

    bodyDef.type = b2_staticBody; 
    bodyDef.position = [self toMeters:startPos]; 
    bodyDef.userData = freeBodySprite; 


    float radiusInMeters = ((freeBodySprite.contentSize.width * freeBodySprite.scale/PTM_RATIO) * 0.5f); 
    shape.m_radius = radiusInMeters; 


    fixtureDef.shape = &shape; 
    fixtureDef.density = 0.02f; 
    fixtureDef.friction = 1.0f; 
    fixtureDef.restitution = 0.0f; 

    circularObstacleBody = world->CreateBody(&bodyDef); 
    stoneFixture = circularObstacleBody->CreateFixture(&fixtureDef); 
    freeBody = circularObstacleBody; 

} 
+0

Непосредственно перед этой строкой кода, где генерируется exc_bad_access, вы уверены, что 'freeBodySprite' не' nil'? –

+0

№. когда-то это работает, а когда-то его нет. – Zohaib

ответ

0

У меня был таймер, который планировался каждые 0,01 сек. и я делал freebody = nil на конце контакта, поэтому всякий раз, когда это было нуль, и мой метод таймера работал, это давало мне эту ошибку.

0

Вероятно, вы теряете freeBodySprite ссылку памяти.

Попробуйте создать его как объект retain и всегда используйте self.freeBodySprite в своем коде.

@property (nonatomic, retain) CCSprite *freeBodySprite; 

... 

self.freeBodySprite = [CCSprite spriteWithFile:@"object.png"]; 

... 

self.freeBodySprite.position.x; 
Смежные вопросы