如何从精灵节点中删除特定的子节点?

时间:2014-07-28 03:46:16

标签: ios objective-c sprite-kit sprite children

我正在制作一个在世界上显示25个级别的精灵套件游戏。我想要做的就是锁定每个级别,以便我在上面添加一个locked.png图像。级别图标。当用户达到该级别时,我想删除锁定的图标,以便用户可以访问该级别。

问题是我已经将锁和级别号码添加为子级,因此当我从removeAllChildren的图标转到_level2时,它也会删除级别数。

有没有办法从spriteNode中删除一个孩子?

这是代码:

//Lock
SKSpriteNode *locked = [SKSpriteNode spriteNodeWithImageNamed:@"Locked.png"];
locked.position = CGPointMake(0, 0);
locked.zPosition = 2.0;
locked.size = CGSizeMake(20*DoubleIfIpad, 20*DoubleIfIpad);
locked.color = [UIColor colorWithRed:255/255. green:156/255. blue:0/255. alpha:1.0];
locked.colorBlendFactor = 1.0;


_level2 = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"crate.png"] size:CGSizeMake(40*DoubleIfIpad, 40*DoubleIfIpad)];
_level2.position = CGPointMake(CGRectGetMidX(self.frame)-50*DoubleIfIpad, CGRectGetMidY(self.frame)+50*DoubleIfIpad);
_level2.name = @"level2";

SKLabelNode *level2txt = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
level2txt.position = CGPointMake(0, -8*DoubleIfIpad);
level2txt.fontColor = [SKColor whiteColor];
level2txt.fontSize = 20*DoubleIfIpad;
level2txt.text = @"2";
level2txt.name = @"level2";

[_level2 addChild:locked];

[_level2 addChild:level2txt];
[_levels addObject:_level2];
[self addChild:_level2];

我已经设置了以单独的方法解锁关卡:

if (highLevel >= 2) {
    [_level2 removeAllChildren];
}

highLevel是NSInteger。

1 个答案:

答案 0 :(得分:2)

node是您要删除的节点,scenenode的父节点。

// when you create it
node.name = @"RemoveThisGuy"
[scene addChild:node];

// when you want to delete it
[[scene childNodeWithName:@"RemoveThisGuy"] removeFromParent];