我对 Sprite Kit 还很陌生,我正在尝试开发一款游戏,其中一些怪物使用此代码永远移动。
return SKAction.sequence([
SKAction.runBlock({ self.moveMonster(monster) }),
SKAction.waitForDuration(monster.movementSpeed())
])
问题是我希望等待时间根据怪物速度而变化,这是一个函数。
这段代码没有实现我想要做的事情,因为 movementSpeed 函数只被调用一次。
非常感谢您的帮助!
最佳答案
您可以使用 runAction
中的 completionHandler
每次添加不同的 SKAction 序列
,以更改您的等待持续时间
。例如。
func addSKAction(waitDuration : NSTimeInterval)
{
let moveSprite = SKAction.runBlock({ () -> Void in
self.moveMonster(monster)
})
let waitDuration = SKAction.waitForDuration(waitDuration)
let sequence = SKAction.sequence([moveSprite,waitDuration])
spriteNode.runAction(sequence, completion: { () -> Void in
addSKAction(waitDuration) // Change wait duration each time.
})
}
每次更改 waitDuration
变量的值。
如果你只是想随机改变waitDuration
,可以使用SKAction.waitForDuration:withRange:
let moveSprite = SKAction.runBlock({ () -> Void in
self.moveMonster(monster)
})
let waitDuration = SKAction.waitForDuration(5, withRange: 4)
let sequence = SKAction.repeatActionForever(SKAction.sequence([moveSprite,waitDuration]))
这会将 waitDuration
从 (5 - range/2) = 3 随机更改为 (5 + range/2) = 7 .
关于ios - 以不同的持续时间永远重复 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563239/