【发布时间】:2017-03-17 14:28:45
【问题描述】:
我正在寻求帮助,以了解为什么我的 speedToPoint 变量在执行 wait 操作时始终为 1。
这是我为使鸟飞到预定义矩形中的随机点而编写的 SKSpriteNode 扩展的一部分。 speedToPoint 也在 1 和 4 之间随机化,并用作 moveTo 操作的持续时间。但是,我还需要将 TimeInterval 用于操作序列中的等待块。
speedToPoint 确实在运行块中随机化(我已经确认)。如何在序列的下一部分的等待块中使用相同的随机数?
var speedToPoint:TimeInterval = 1
self.run(SKAction.repeatForever(
SKAction.sequence([
SKAction.run{
speedToPoint = TimeInterval(Globals.sharedInstance.randomF(min: 1, max: 4))
var pointX = Globals.sharedInstance.randomF(min: left,max: right)
let pointY = Globals.sharedInstance.randomF(min: top,max:bottom)
while abs(self.position.x.distance(to: pointX)) < 200 {
pointX = Globals.sharedInstance.randomF(min: left,max: right)
}
self.xScale = pointX < self.position.x ? -1 : 1
self.run(SKAction.move(to: CGPoint(x:pointX,y:pointY),duration: speedToPoint))
},
SKAction.wait(forDuration: speedToPoint)])
),withKey: "inFrame")
澄清一下,我真正想做的是让鸟飞到一个点,一旦它到达那个点,就飞到另一个点。我仍在围绕动作序列以及它们是否真的等待完成继续前进。从我读过的内容来看,它们确实如此,但不适用于任何move 动作。这就是为什么wait 在那里。也许还有其他方法?
【问题讨论】:
-
我发现它与 run 块闭包有关,因为它异步运行,变量不会及时更改。我找到了一个适合我的解决方法,但我真的很好奇正确的方法
标签: swift sprite-kit skaction