SKActions Иногда не работает, но если свернуть игру и открыть ее снова, это работает.Как это могло произойти? - PullRequest
0 голосов
/ 23 марта 2019

У меня проблема с двумя действиями, оба из которых - переход к действиям, который перемещает фигуры в пустую позицию узла (для файла sks добавляются пустые узлы). Проблема возникает не всегда, иногда, в первом случае, когда игрок достигает loc: 25 означает, что выигрывает, он перемещается в позицию пустого узла, но иногда он не перемещается туда, но игра продолжается, и если я сверну игру и открою ее они уже там, где они должны были двигаться раньше.

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

Я запускаю второй skaction с последовательностью с двумя другими действиями и первым с действием skspritenode.run (). и у меня нет устройства iOS, поэтому я тестирую его на симуляторе.

Вот оба SKActions, в которых я использую одно и то же, ничего нового:

for node in children {

        if (node.name == String(nextSpace)) {

        let moveAction:SKAction = SKAction.move(to: node.position, duration: 0.5)
        moveAction.timingMode = .easeOut

        let wait:SKAction = SKAction.wait(forDuration: 0.1)
        let runAction:SKAction = SKAction.run({

            if (self.movesRemaining == 1) {

                self.KillHim(self.whosTurn, nextspace: nextSpace)

            }

            self.movesRemaining = self.movesRemaining - 1
            self.setThePlayerSpace(space: nextSpace, player:self.whosTurn)

            self.movePiece()

            })
            if whosTurn == .Player1 {

                touchedNode.run(SKAction.sequence([moveAction, wait, runAction]))

            } else {

                playerPiece.run(SKAction.sequence([moveAction, wait, runAction]))

            }
        }
    }

код для перемещения, когда игрок выиграл:

if (currentSpacePlayer1Piece1 == 25) {

               let loc:SKNode = childNode(withName: "c1")!
               Player1Piece1.run(SKAction.move(to: loc.position, duration: 0.2))
               currentSpacePlayer1Piece1 = 26
               OneMoreMove += 1
 } else if (currentSpacePlayer1Piece2 == 25) {

               let loc:SKNode = childNode(withName: "c2")!
                Player1Piece2.run(SKAction.move(to: loc.position, duration: 0.2))
                currentSpacePlayer1Piece2 = 26
                OneMoreMove += 1
 }

это могло произойти из-за использования его в симуляторе?

...