制作一个快速游戏。试图激活功能" fireFrisbee"永远在0-3秒之间的随机时间间隔。
iphone模拟显示白屏。该功能似乎只激活一次(只听到一个飞盘发射声)
let action = SKAction.sequence([SKAction.run(fireFrisbee), SKAction.wait(forDuration: TimeInterval(arc4random_uniform(3)))])
run(SKAction.repeatForever(action))
我在override func didMove(to view: SKView) {
答案 0 :(得分:3)
有几点要注意,如果该代码有效,你可能遇到一些问题,其中飞盘设置为3秒触发,然后它再次运行动作,下一个可以在0秒触发(动作加倍)并且下一个动作可能会在0秒时触发(动作增加三倍)有点混乱。
但是该代码无论如何都不会起作用,发生的事情是你得到一个随机值TimeInterval(arc4random_uniform(3))
,但你实际上很难用该随机值编写该动作。当动作重复时,它将始终具有该硬编码随机值。因此,如果您第一次运行它并生成随机2,它将始终每2秒运行一次。
有几种方法可以做到这一点你可以在你的update func中放一个随机生成器来调用fireFrisbee。或者你可以创建一个带有完成调用的递归动作,它会在完成后自动激活....
let wait = SKAction.wait(forDuration: 5)
run(wait) {
self.setupFireFrisbee()
}
func setupFireFrisbee() {
action = SKAction.sequence([SKAction.run(fireFrisbee), SKAction.wait(forDuration: TimeInterval(arc4random_uniform(3)))])
//completion shortcut {} after action
run(action) {
self.setupFireFrisbee()
}
}