这是我的第一个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)
// }
}
}
谁能告诉我为什么会这样吗?