[英]Swift and Sprite kit not touching properly
我正在用Sprite Kit制作游戲,其中用戶具有穿過屏幕的輕擊球。 球每1秒產生一次。 但是,如果生成了兩個球,並且用戶點按了第一個球,則僅第二個(以及隨后生成的任何一個球)將被刪除/記錄,而不是用戶實際點擊的那個球。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
let node = self.nodes(at: location).first
if node?.name == "BALL" {
currentScore += ballValue
player?.removeFromParent()
}
else {
gameOver()
}
}
}
override func didMove(to view: SKView) {
setupTracks()
createHUD()
self.run(SKAction.repeatForever(SKAction.sequence([SKAction.run {
self.createBall(forTrack: self.track)
}, SKAction.wait(forDuration: 2)])))
}
func createBall(forTrack track: Int) {
setLevel()
player?.name = "BALL"
player?.size = CGSize(width: 100, height: 100)
ballValue = 1
let ballPosition = trackArray?[track].position
player?.position = CGPoint(x: (ballPosition?.x)!, y: (ballPosition?.y)!)
player?.position.y = (ballPosition?.y)!
player?.zPosition = 1
if ballDirection == "right" {
player?.position.x = 0
moveRight()
}
else {
player?.position.x = (self.view?.frame.size.height)!
moveLeft()
}
}
我很確定這是因為您這樣做:
player?.removeFromParent()
無論觸摸哪個精靈,但player
始終是最后一個精靈。 您已經將接觸到的node
分配給了node,所以我認為您需要這樣做:
node.removeFromParent()
代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.