ios - 在 Swift 中移动 SKNode 位置 - Mancala 游戏
问题描述
你好
只是为了提供一些背景信息,我正在尝试在 ios 中制作 Mancala 游戏。我在 GameScene.sks 文件中创建了 UI。
xCode 截图
我有每个 SKNode 坑(pit0 是左下方的坑,从那里逆时针编号)编号为它内部的另一个 SKNode,称为芯片,其中包含该坑的所有芯片 SKSpriteNode。我正在努力做到这一点,以便当按下其中一个坑时,所有筹码都会移动 4 个坑。
class GameScene: SKScene {
var touchLocation = CGPoint()
var gameBoard = SKNode()
var pits: Array<Pit> = Array(repeating: Pit(), count: 14)
override func sceneDidLoad() {
setUpGameBoard()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
touchLocation = touch.location(in: gameBoard)
let currentPit: Pit = ((gameBoard.atPoint(touchLocation).parent?.parent) ?? pits[0]) as! Pit
print(currentPit)
for i in 0..<14 {
if currentPit == pits[i] {
let move1 = SKAction.move(to: pits[i+1].position, duration: 0.5)
let move2 = SKAction.move(to: pits[i+2].position, duration: 0.5)
let move3 = SKAction.move(to: pits[i+3].position, duration: 0.5)
let move4 = SKAction.move(to: pits[i+4].position, duration: 0.5)
let waitAction = SKAction.wait(forDuration: 0.1)
let moveSequence = SKAction.sequence([move1, waitAction, move2, waitAction, move3, waitAction, move4])
currentPit.chipsNode.run(moveSequence)
}
}
}
}
func setUpGameBoard() {
gameBoard = childNode(withName: "gameBoard")!
for i in 0..<14 {
pits[i] = (childNode(withName: "gameBoard")?.childNode(withName: "pit\(i)"))! as! Pit
pits[i].chipsNode = pits[i].childNode(withName: "chips")!
pits[i].chips = pits[i].childNode(withName: "chips")?.children as! [Chip]
}
print(pits)
}
此代码移动筹码,但仅将它们稍微移动到它们应该去的位置。我正在尝试逆时针移动包含所有芯片 4 个坑的芯片 SKNode。如果可以的话,请帮助我,如果您对我试图对此发表评论感到困惑。