只是想增强这段代码的一部分,我想知道我是否可以在序列中包含一个 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];
}
}
_debris
是一个 NSMutableArray
。所以基本上 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],
]]];
但这没有用。甚至可以在序列中使用 if 语句吗?我怎样才能让它工作?
最佳答案
代码将无法运行,因为 [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],
]]];
关于ios - 序列中可以有 if 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885078/