簡體   English   中英

Swift和Sprite套件接觸不良

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM