我对Sprite Kit很陌生,我正试图开发一款游戏,其中一些怪物正在使用此代码永远移动。
return SKAction.sequence([
SKAction.runBlock({ self.moveMonster(monster) }),
SKAction.waitForDuration(monster.movementSpeed())
])
事情是,我希望等待时间根据怪物速度而变化,这是一个函数。
此代码无法实现我尝试做的事情,因为 movementSpeed 函数只调用一次。
非常感谢你的帮助!
答案 0 :(得分:1)
向场景声明两个属性
var monsterTimer: NSTimerInterval(2)
var monsterInterval: NSTimerInterval(2)
在您的更新方法
中self.monsterTimer -= self.delta
if self.monsterTimer <= 0 {
self.moveMonster(monster)
// change the value of monsterInterval if you need to change the delay
self.monsterTimer = self.monsterInterval
}
答案 1 :(得分:1)
您可以使用completionHandler
中的runAction
每次添加不同的SKAction sequence
来更改wait duration
。例如。
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 - 范围/ 2)= 3 随机更改为(5 +范围/ 2)= 7 。