同时为两个单独的SKSpriteNodes同时运行两个SKAction

问题描述 投票:0回答:1

标题说明了一切。我有两个SKSpriteNodes [leftTrap,rightTrap]和两个单独的SKActions [rotateSequenceLeft,rotateSequence],它们需要同时运行,但需要随机运行。

带有SKAction的SKSpriteNodes

需要以相同的随机间隔并行运行这两个。

   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))
swift xcode sprite-kit skspritenode skaction
1个回答
0
投票

您可以尝试这样的事情

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秒钟永远重复一次。

© www.soinside.com 2019 - 2024. All rights reserved.