var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("spawnredbarrier"), userInfo: nil, repeats: true)
}
func spawnredbarrier(){
var barrier = SKSpriteNode(imageNamed: "redobstacle.png")
barrier.position = CGPointMake( 515, 0)
let actionn = SKAction.moveToY(self.size.height, duration: 6)
barrier.runAction(SKAction.repeatActionForever(actionn))
self.addChild(barrier)
var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png")
bluebarrier.position = CGPointMake( 515, 0)
let action = SKAction.moveToY(self.size.height, duration: 6)
bluebarrier.runAction(SKAction.repeatActionForever(action))
self.addChild(bluebarrier)
var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png")
greenbarrier.position = CGPointMake( 515, 0)
let actionnn = SKAction.moveToY(self.size.height, duration: 6)
greenbarrier.runAction(SKAction.repeatActionForever(actionnn))
self.addChild(greenbarrier)
}
我希望spawnbarriers的计时器每隔2秒选择一个随机障碍及其动作
我怎样才能使这个动作随机
以及如何使持续时间6以特定速率增加
答案 0 :(得分:2)
第一个问题:要在Swift中获取随机数,您可以使用此SO question中的任何答案。为清晰起见,我会选择this one:
此方法将在给定的最小值和最大值
之间生成随机Int值
func randomInt(min: Int, max:Int) -> Int {
return min + Int(arc4random_uniform(UInt32(max - min + 1)))
}
完成后,只需创建一个简单的Switch语句:
let r = randomInt(0, 2)
switch r{
case 0: self.addChild(barrier)
case 1: self.addChild(bluebarrier)
case 2: self.addChild(greenbarrier)
default: println("Other")
}
您的功能如下:
func spawnredbarrier(){
var barrier = SKSpriteNode(imageNamed: "redobstacle.png")
barrier.position = CGPointMake( 515, 0)
let actionn = SKAction.moveToY(self.size.height, duration: 6)
barrier.runAction(SKAction.repeatActionForever(actionn))
var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png")
bluebarrier.position = CGPointMake( 515, 0)
let action = SKAction.moveToY(self.size.height, duration: 6)
bluebarrier.runAction(SKAction.repeatActionForever(action))
var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png")
greenbarrier.position = CGPointMake( 515, 0)
let actionnn = SKAction.moveToY(self.size.height, duration: 6)
greenbarrier.runAction(SKAction.repeatActionForever(actionnn))
let r = randomInt(0, 2)
switch r{
case 0: self.addChild(barrier)
case 1: self.addChild(bluebarrier)
case 2: self.addChild(greenbarrier)
default: println("Other")
}
}
第二个问题:你需要一个Timer(你已经知道如何触发一个,只需创建另一个),并且在目标方法中只需增加一个保持速率值的iVar。使用iVar而不是硬编码6
更新:
在类级别定义实例变量,然后调整iVar值的函数(需要检查当n达到0时会发生什么)。添加一个调用此函数的计时器,并使用n而不是硬编码6
var n: Int = 6
function adjustIVar() {
self.n--
}