迅速 – 随着时间的推移增加对象的速度

我正在寻找一种方法来增加我玩游戏的速度,我希望通过增加一定时间之后,即每隔30秒或最好在10个物体(树)之后产生的障碍物的频率,已经产生了,所以玩得越久,玩得越久。

这是我目前的设置,我使用repeatActionForever我怎么能改变这个像repeatAction10Times与每个循环不同的延迟variables?

 //in didMoveToView treeTexture1 = SKTexture(imageNamed: "tree") treeTexture1.filteringMode = SKTextureFilteringMode.Nearest var distanceToMove = CGFloat(self.frame.size.width + 0.1); var moveTrees = SKAction.moveByX(-distanceToMove, y:0, duration:NSTimeInterval(0.006 * distanceToMove)); var removeTrees = SKAction.removeFromParent(); moveAndRemoveTrees = SKAction.sequence([moveTrees, removeTrees]); var spawn = SKAction.runBlock({() in self.spawnTrees()}) //this delay is what I would like to alter for each loop var delay = SKAction.waitForDuration(NSTimeInterval(1.2)) var spawnThenDelay = SKAction.sequence([spawn, delay]) var spawnThenDelayForever = SKAction.repeatActionForever(spawnThenDelay) self.runAction(spawnThenDelayForever) func spawnTrees() { var tree = SKNode() tree.position = CGPointMake( self.frame.size.width + treeTexture1.size().width * 2, 0 ); tree.zPosition = -10; var height = UInt32( self.frame.size.height / 1 ) var height_max = UInt32( 220 ) var height_min = UInt32( 100 ) var y = arc4random_uniform(height_max - height_min + 1) + height_min; var tree1 = SKSpriteNode(texture: treeTexture1) tree1.position = CGPointMake(0.0, CGFloat(y)) tree1.physicsBody = SKPhysicsBody(rectangleOfSize: tree1.size) tree1.physicsBody?.dynamic = false tree1.physicsBody?.categoryBitMask = treeCategory; tree1.physicsBody?.collisionBitMask = 0 tree1.physicsBody?.contactTestBitMask = 0 tree.addChild(tree1) tree.runAction(moveAndRemoveTrees) trees.addChild(tree) } 

你应该尝试使用简单的action.speed代码。

例如:而不是运行spawnThenDelay十次,然后运行一些代码并重复,请尝试做一个计数器。 在代码的最顶端创build一个全局variables,称为counter ,或者任何你想调用它的东西。 在spawnTrees() ,将代码更改为:

 func spawnTrees() { var tree = SKNode() tree.position = CGPointMake( self.frame.size.width + treeTexture1.size().width * 2, 0 ); tree.zPosition = -10; counter++ ... } 

然后在update() ,检查计数器是否在10以上。

 if counter == 10 { self.actionForKey("spawnThenDelayForever").speed += 10.0 // Or some integer/float like that counter = 0 } 

现在,这将是每10次产生一些东西,在if语句中运行代码。 但要做到这一点,你必须更新你的调用spawnAndThenDelayForever添加一个密钥引用它。

 self.runAction(spawnThenDelayForever, withKey "spawnThenDelayForever") 

让我知道我给你的东西是否有语法上的错误,或者如果不正确的话。