序列中是否可以有if语句?

Lia*_*mme 2 iphone objective-c ios sprite-kit

只是尝试增强这部分代码,我想知道我是否可以在序列中包含if语句?当碎片数大于10时,我想减缓碎片的产生.

这是当前的代码:

-(void)spawnDebris {
    //debris
    SKSpriteNode * debris = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"debris1.png"] size:CGSizeMake(40, 40)];
    debris.zPosition = 1.0;

    debris.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15];
    debris.physicsBody.allowsRotation = NO; 
    debris.physicsBody.categoryBitMask = CollisionDebris;

    RandomPosition = arc4random() %248;
    RandomPosition = RandomPosition + 34;
    debris.position = CGPointMake (RandomPosition, self.size.height + 40);

    [_debris addObject:debris];
    [self addChild:debris];

    //next Spawn:
    [self runAction:[SKAction sequence:@[
          [SKAction waitForDuration:2],
          [SKAction performSelector:@selector(spawnDebris) onTarget:self],
    ]]];

    if (_dead == YES) {
        [self removeAllActions];
    }

}
Run Code Online (Sandbox Code Playgroud)

哪里_debrisNSMutableArray.所以基本上SKSpriteNodes每2秒钟就会增加一次,但要改变它,我想waitForDurations_debris计数超过一定数量后让它们改变.

这就是我的想法:

 //next Spawn:
    [self runAction:[SKAction sequence:@[
          [SKAction waitForDuration:2],
          [SKAction runBlock:^{
                 if (_debris.count > 10) {
                      [SKAction waitForDuration:7];
                 }
    }],
          [SKAction performSelector:@selector(spawnDebris) onTarget:self],
    ]]];
Run Code Online (Sandbox Code Playgroud)

但这没效果.甚至可以在序列中使用if语句吗?我怎样才能让它发挥作用?

小智 5

代码不起作用,因为[SKAction waitForDuration:7]没有执行.

更容易:

float time = 2.0;

if (_debris.count > 10) { time = 9.0; }

[self runAction:[SKAction sequence:@[
      [SKAction waitForDuration:time],
      [SKAction performSelector:@selector(spawnDebris) onTarget:self],
]]];
Run Code Online (Sandbox Code Playgroud)