SkSpriteNode.Run Действие не работает несколько раз - PullRequest
0 голосов
/ 30 августа 2018

это моя первая игра SpriteKit, и у меня не было проблем с действием запуска, поэтому я попытался, но ничего не могу понять, единственное, что я выяснил, это то, что весь код в порядке, но просто выполнить действие не выполнить несколько раз и не видел короля поведения в этом паттерне.

Я играю в настольную игру для 4 игроков, и у всех 4 игроков есть 4 фигуры. проблема в том, чтобы вернуться домой, когда когда-либо игрок убивает фигуру другого игрока, эта фигура возвращается домой до того, как все заработало, но я добавил новую функцию: когда игрок убивает другого игрока или выигрывает, он получает еще 1 ход. после того, как я добавил, что теперь у меня иногда возникает эта проблема, то, что кусок убит, его значение текущего местоположения изменяется на тот, который является его домашним номером, но действие, чтобы переместить его туда, иногда не работает. после этого, потому что текущее местоположение var меняло его местоположение на домашний номер всякий раз, когда в следующий раз функция ai решит переместить эту фигуру или если это человек-игрок, и мы решили переместить эту фигуру, следующая позиция этой фигуры теперь установлена ​​на 1+ домашнее местоположение, так что где когда он замерз, он приходит в это место (1+ дом)

вот код этой функции убийства, фактически она предназначена для 4 фигур 4 игрока, но она очень длинная, поэтому я публикую только 1 игрока.

func KillHim(player:Player, nextspace:Int) {

if (player == .Player2) {

            if (nextspace == currentSpacePlayer2Piece1) {

                for node in children {

                    print("Inside the node in children player1 csp2p1 :")

                    if node.name == ("5") {

                        print("Inside the if NODE name is == 5")

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

                 Player2Piece1.run(moveAction) {
                            print("It Happened")
                        }

                            self.currentSpacePlayer2Piece1 = 5

                        player1Moves += 1
                    }
                }
            }
         }
      }

ОБНОВЛЕНИЕ:

Теперь работает после удаления еще 1 параметра поворота.

в ходу сделал, чтобы посмотреть, когда он снова дает ход тому же игроку, тогда он не работает.

Вот код:

это после того, как все действия по подсчету и перемещению завершены, поэтому после этого в другом состоянии он меняет ход игрока.

} else {

            if (self.whosTurn == .Player1) {

              //  if (player1Moves == 0) {

                    self.whosTurn = .Player2

                    flashPlayer(player: whosTurn)

                    flashTurn(player: whosTurn)

                    print("Who's Turn is Player2 NOW")

                    rollDice(player: whosTurn)

               // } else {
                   // self.whosTurn = .Player1

                 //   flashPlayer(player: whosTurn)

                  //  flashTurn(player: whosTurn)

                  //  print("InSide 1MORE MOVE ::  : : ; ; :")
                   // player1Moves -= 1

                  //  rollDice(player: whosTurn)
              //  }

            } else if (self.whosTurn == .Player2) {

              //  if (player2Moves == 0) {

                self.whosTurn = .Player3

                flashPlayer(player: whosTurn)

                flashTurn(player: whosTurn)
                print("Who's Turn is Player3 NOW")

                rollDice(player: whosTurn)

              //  } else {
                   // self.whosTurn = .Player2

               //     flashPlayer(player: whosTurn)

               //     flashTurn(player: whosTurn)
                //    print("InSide 1MORE MOVE ::  : : ; ; :")
                //    player2Moves -= 1

                //    rollDice(player: whosTurn)
               // }

            }
    }

Может кто-нибудь сказать мне, почему это происходит?

...