SKActions 有时不起作用,但如果最小化游戏并重新打开它,它就会起作用。怎么会这样呢?



我在 2 个动作中遇到问题,这两个动作都移动到动作,将片段移动到空节点的位置(空 sknode 是从 sks 文件添加的)。问题只发生一些并非总是如此,在第一个中,当玩家到达 loc:25 意味着获胜时,它会移动到空节点的位置,但有时它不会移动到那里,但游戏继续,如果我最小化游戏并打开它,他们已经在那里他们之前应该移动的地方。

第二个问题这个更重要,因为有了这个滑板玩家移动到下一个位置。但是很少有时间它不起作用,一切都很好,但是当涉及到执行该 skaction 时,它会完全停止,只接触工作。但是如果我只是最小化游戏并打开它,它会移动到位置,然后游戏运行正常。没问题,这怎么会发生?

我使用其他 2 个操作的序列运行第二个 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
}

是否可能因为在模拟器中使用它而发生?

正如 knightOfDragon 所说,节点在删除后被暂停了一些逻辑,它运行良好。如果您有相同的问题,请在不打算的地方使用它,则搜索已暂停。

最新更新