SkSpriteNode.Run操作有时无法使用

时间:2018-08-30 05:44:27

标签: ios swift sprite-kit skspritenode skaction

这是我的第一个SpriteKit游戏,之前我没有遇到运行动作的任何问题,所以我尝试了一下,但无法弄清楚什么,只有我发现所有代码都可以,但是只是执行了动作,所以不执行有时并没有看到这种行为中的任何行为之王。

我正在制作4个棋盘游戏,所有4个棋子都有4个棋子。问题在于当任何玩家杀死某位玩家的棋子时会回到家中,而该棋子在其正常工作之前会回到家中,但我添加了一项新功能,即当玩家杀死另一名玩家或获胜时,又可以转一圈。在添加之后,现在我有时会遇到这个问题,该棋子被杀死了,它的当前位置var的值更改为它的家号,但是将其移动到该位置的动作有时无法起作用。 之后,由于当前位置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)
               // }

            }
    }

谁能告诉我为什么会这样吗?

0 个答案:

没有答案