Cocos2d iphone 不工作-Box2D

Cocos2d iphone 不工作-Box2D,cocos2d-iphone,Cocos2d Iphone,我在我的box2D游戏中使用tilemap,我在其中创造了超能力。当玩家点击电源时,屏幕上会显示一个分数标签。除此之外,我还想在玩家点击tilemap时将其移除。我已显示标签,但无法卸下电源。下面是一些代码: 在ContactListener中,我调用从tilemap移除电源的方法: void ContactListener::BeginContact(b2Contact *contact) { else if(actorA.tag==obj.gamePower.tag) //obj

我在我的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上创建了一个对象层来显示电源。但不知何故,我无法移除它。有人能帮我吗?

  • 如果电源是CCNode,为什么不使用[power removeFromParentAndCleanup:YES]将其删除
  • (removePower:)不会删除任何内容,因为它会创建一个新场景,并从该场景中删除精灵不属于的精灵
  • 另一个注意事项是,与听众联系时要小心。删除BeginContact中的o节点可能会导致崩溃。假设powerA同时与actor1和actor2接触。使用powerA和actor1对BeginContact的第一次调用将删除powerA,因此使用powerA ENVELVED对BeginContact的后续调用将崩溃
谢谢。使用[Power removeFromParentAndCleanup:YES]删除了电源。我在ContactListener中使用了它。但现在球员没有前进。似乎电源已从场景中移除,但仍在tilemap上。原因可能是什么?如果您建议我不要删除BeginContact中的节点,我应该在哪里删除它?