不工作 - Box2D

时间:2011-05-09 05:22:40

标签: cocos2d-iphone

我在box2D游戏中使用了tilemap,我在其中创建了权限。当玩家击中电源时,屏幕上会显示一个分数标签。与此同时,我想在玩家击中时从tilemap中移除该力量。我已经显示标签,但我无法移除电源。这是一些代码:

在ContactListener中,我调用的方法是从tilemap中删除电源:

void ContactListener::BeginContact(b2Contact *contact) {  
else if(actorA.tag==obj.gamePower.tag)     //obj is a DataClass object.
    {  
        [GameScene addPointLabel];    // For displaying score label  
        [GameScene removePower:actorA];     
    }  



+(void)removePower:(id)sender         
{  
    GameScene *obj=[[GameScene alloc]init];  
    CCSprite *sprite = (CCSprite *)sender;  
    [obj removePowerFromScene:sprite];  
    [obj release];      
}  


-(void)removePowerFromScene:(id)sender    
{  
    CCSprite *sprite = (CCSprite *)sender;  
    [self removeChild:sprite cleanup:YES];    
}  

我在tilemap上创建了一个对象图层来显示功率。但不知何故,我无法删除它。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

  • 如果电源是CCNode,为什么不用[power removeFromParentAndCleanup:YES]删除它?
  • (removePower :)不会删除任何内容,因为它会创建一个新场景并从精灵不属于的场景中删除精灵。
  • 另一个通知,请小心联络听众。删除BeginContact中的o节点可能会导致崩溃。让我们想象一下powerA与actor1和actor2联系的情况。第一次使用powerA和actor1调用BeginContact会删除powerA,因此随后调用带有powerA的BeginContact将会崩溃!