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)
哪里_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],
]]];
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)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |