我该如何删除联系节点

时间:2014-08-25 10:06:41

标签: ios objective-c sprite-kit

我必须在与敌人目标接触时删除一个。我试过这个,但这删除了所有的猫。我只删除了接触猫。

-(void)didBeginContact:(SKPhysicsContact *)contact
{

    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

    if (collision == (enemyCategory | catsCategory)) {
        [self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
            [node removeFromParent];
        }];
        NSLog(@"test 1");
    }

1 个答案:

答案 0 :(得分:0)

代码:

[self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
            [node removeFromParent];
        }];

将删除名称属性为@" cats"的所有节点。因此,它正在移除屏幕上的所有猫。

您需要检查联系人cat是否与被枚举者相同,然后将其删除。

[self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
        if ([contact.bodyA.node isEqual:node] || [contact.bodyB.node isEqual:node])
        { 
            [node removeFromParent]; 
            stop = YES;
        }
    }];

您可以详细了解enumerateChildNodesWithName:usingBlock:方法here