Swift SKAction применяет силу только к одному узлу - PullRequest
0 голосов
/ 27 февраля 2019
    func obstacle1() {

    ob1Node.position = CGPoint(x: frame.size.width/8, y: frame.size.height*1.5)
    ob2Node.position = CGPoint(x: frame.size.width*0.31, y: frame.size.height*1.5)
    ob3Node.position = CGPoint(x: frame.size.width/2, y: frame.size.height*1.5)
    ob4Node.position = CGPoint(x: frame.size.width*(1-(0.31)), y: frame.size.height*1.5)
    ob5Node.position = CGPoint(x: frame.size.width*(1-(1/8)), y: frame.size.height*1.5)

    ob1Node.physicsBody = SKPhysicsBody(circleOfRadius: 100)
    ob2Node.physicsBody = SKPhysicsBody(circleOfRadius: 100)
    ob3Node.physicsBody = SKPhysicsBody(circleOfRadius: 100)
    ob4Node.physicsBody = SKPhysicsBody(circleOfRadius: 100)
    ob5Node.physicsBody = SKPhysicsBody(circleOfRadius: 100)

    ob1Node.physicsBody?.collisionBitMask = 0
    ob2Node.physicsBody?.collisionBitMask = 0
    ob3Node.physicsBody?.collisionBitMask = 0
    ob4Node.physicsBody?.collisionBitMask = 0
    ob5Node.physicsBody?.collisionBitMask = 0

    ob1Node.fillColor = .yellow
    ob2Node.fillColor = .yellow
    ob3Node.fillColor = .yellow
    ob4Node.fillColor = .yellow
    ob5Node.fillColor = .yellow

    addChild(ob1Node)
    addChild(ob2Node)
    addChild(ob3Node)
    addChild(ob4Node)
    addChild(ob5Node)

    let firstMove = SKAction.moveBy(x: 0, y: -frame.size.height*(0.68), duration:2)
    let delay1 = SKAction.wait(forDuration: 1)
    let randomVector = SKAction.applyForce(CGVector(dx: CGFloat(100), dy: CGFloat(-400)), duration: 5)
    let removeNode = SKAction.removeFromParent()
    let sequence = SKAction.sequence([firstMove,delay1,randomVector,removeNode])

    ob1Node.run(sequence)
    ob2Node.run(sequence)
    ob3Node.run(sequence)
    ob4Node.run(sequence)
    ob5Node.run(sequence)

    print("obstacle1")

}

Я экспериментирую с этим кодом, чтобы добавить 5 круговых препятствий для входа на сцену, передвигаться по вектору и затем удаляться.Проблема в том, что узлы добавляются, перемещаются в свое начальное положение, а затем вектор силы применяется только к одному из кругов.При экспериментировании с удалением некоторых из них только самый левый узел получает вектор.В конце последовательности все узлы удаляются, как если бы все узлы взяли последовательность, просто вектор силы применяется только к одному, как указано ранее.

...