在SpriteKit中删除特定的节点

乔治

初学者需要一些帮助:我有不同的节点:4个正方形(sprite1)和1个计数器(counterLabel,对已删除的节点进行计数)。我想通过触摸删除4个正方形。使用下面的代码可以删除正方形,也可以删除计数器。奇怪的是,因为我试图专门解决方形节点(sprite1)。是否有可能专门删除方形节点(精灵1)?

@implementation GameScene {
    BOOL updateLabel;
    SKLabelNode *counterLabel;
}

int x;
int y;
int counter;

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]){

    self.backgroundColor = [SKColor /*colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0*/ whiteColor];

    counter = 0;

    updateLabel = false;

    counterLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
    counterLabel.name = @"myCounterLabel";
    counterLabel.text = @"0";
    counterLabel.fontSize = 48;
    counterLabel.fontColor = [SKColor greenColor];
    //counterLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
    //counterLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBottom;
    counterLabel.position = CGPointMake(50,50); // change x,y to location you want
    //counterLabel.zPosition = 900;
    [self addChild: counterLabel];
    }
    return self;
}


-(void) didMoveToView:(SKView *)view {

    SKTexture *texture1 = [SKTexture textureWithImageNamed:@"square"];

    for (int i = 0; i < 4; i++) {
    x = arc4random()%668;
    y = arc4random()%924;
    SKSpriteNode *sprite1 = [SKSpriteNode spriteNodeWithTexture:texture1];
    sprite1.position = CGPointMake(x, y);
    sprite1.name = @"square";

    [self addChild:sprite1];
    }
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];

    NSArray *nodes = [self nodesAtPoint: [touch locationInNode: self]];

    for (SKNode *sprite1 in nodes) {

    [sprite1 removeFromParent];

    counter ++;
    updateLabel = true;
    }
}

-(void)update:(CFTimeInterval)currentTime {

    if(updateLabel == true){
    counterLabel.text = [NSString stringWithFormat:@"%i",counter];
    updateLabel = false;
    }
}

@end
伊拉里奥

您应该使用nameSKSpriteNode的属性

在这种情况下,您可以执行以下操作:

for (SKNode *sprite1 in nodes) {

   if(![sprite1.name isEqualToString:@"myCounterLabel"]) {

    [sprite1 removeFromParent];

   }

    counter ++;
    updateLabel = true;
}

因此,如果SKNode名称与counterLabel的名称不同,则removeFromParent。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SpriteKit中删除特定的节点

来自分类Dev

从xml中删除特定节点

来自分类Dev

如何删除或获取SpriteKit中某个节点的位置?

来自分类Dev

如何在SpriteKit中删除或获取某个节点的位置?

来自分类Dev

从链表中删除特定节点-python

来自分类Dev

从单个链接列表中删除特定节点

来自分类Dev

在 spritekit 中旋转子节点

来自分类Dev

(Swift + Spritekit)-完全删除节点及其数据

来自分类Dev

SpriteKit检测节点是否从父节点中删除

来自分类Dev

SpriteKit检测节点是否从父节点中删除

来自分类Dev

节点没有从父节点中删除(spritekit)

来自分类Dev

在使用Swift的SpriteKit中,如何设置子节点数量的特定限制?

来自分类Dev

删除xml文件中具有特定值的子节点

来自分类Dev

从单链通函列表中删除特定节点

来自分类Dev

如何使用Swift从UITableViewCell删除Firebase中的特定子节点

来自分类Dev

使用javascript在嵌套的JSON对象中添加或删除特定节点

来自分类Dev

有什么方法可以在 swift/SpriteKit 中从父级中删除单个/特定子级?

来自分类Dev

如何从XElement删除特定节点?

来自分类Dev

精灵套件删除特定节点

来自分类Dev

删除特定的xml节点Javascript

来自分类Dev

从树中删除(删除)节点

来自分类Dev

在SpriteKit中以随机坐标生成节点

来自分类Dev

在SpriteKit中检测节点半径内的触摸

来自分类Dev

在Spritekit中对每个节点使用anchorPoint

来自分类Dev

在SpriteKit SWIFT中获取SKReferenceNode的子节点

来自分类Dev

在SpriteKit中检测节点半径内的触摸

来自分类Dev

在 spritekit 中更改节点颜色

来自分类Dev

节点树中的 SpriteKit 精灵位置

来自分类Dev

从TreeView中删除节点

Related 相关文章

热门标签

归档