标题说明了一切。我有两个SKSpriteNodes [leftTrap,rightTrap]和两个单独的SKActions [rotateSequenceLeft,rotateSequence],它们需要同时运行,但需要随机运行。
需要以相同的随机间隔并行运行这两个。
leftTrap.run(SKAction.repeatForever(rotateSequenceLeft))
rightTrap.run(SKAction.repeatForever(rotateSequence))
我已尝试将leftTrap节点分组,并通过一个waiting range range操作对rotateSequenceLeft进行分组。但是似乎已创建的组甚至从未运行过等待持续时间操作。
let randomPivotInterval = SKAction.wait(forDuration: 1.0, withRange: 5.0)
let leftGroup = SKAction.group([rotateSequenceLeft, randomPivotInterval])
let rightGroup = SKAction.group([rotateSequence, randomPivotInterval])
leftTrap.run(SKAction.repeatForever(leftGroup))
rightTrap.run(SKAction.repeatForever(rightGroup))
您可以尝试这样的事情
class GameScene: SKScene {
var leftTrap: SKSpriteNode! // TODO: populate this
var rightTrap: SKSpriteNode! // TODO: populate this
func start() {
let rotateTraps = SKAction.run { [weak self] in
guard let self = self else { return }
self.rotate(trap: self.leftTrap, clockwise: .random())
self.rotate(trap: self.rightTrap, clockwise: .random())
}
let wait = SKAction.wait(forDuration: 5)
let sequence = SKAction.sequence([rotateTraps, wait])
run(.repeatForever(sequence))
}
private func rotate(trap: SKSpriteNode, clockwise: Bool) {
// TODO: put rotation code here
}
}
[start()
方法创建一个rotateTraps
动作,每次执行该动作时,都会调用self?。在左陷阱上旋转,将随机布尔值传递给顺时针参数,然后对右陷阱执行相同的动作。
然后rotateTraps
操作被包装为一个序列,并每5秒钟永远重复一次。