分数增加无限

时间:2015-08-06 13:58:32

标签: ios swift sprite-kit

我在update方法中使用以下逻辑来跟踪我的节点的位置,一旦达到某个点,它将从场景中移除,得分将增加1。

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
    println(colorDot.position)
    var checkPoint = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 3 + 50)
    if colorDot.position.y < checkPoint.y {
        if colorDotColor == centerBoxColor {
            score++
            colorDot.removeFromParent()
        } else {
            println("unable to calculate score")
            colorDot.removeFromParent()
        }
    }
    println(score)
}

我遇到的问题是当colorDot达到某个点时,它将从场景中删除,但分数会不断增加。我在想我的代码中存在逻辑缺陷。以下是控制台的截图。

colorDot position and score from console

2 个答案:

答案 0 :(得分:1)

仅仅因为从父节点中删除colorDot不会从对象中删除实例。这意味着对checkPoint的位置检查将通过。

// This will be true even if colorDot is not part of the node hierarchy
if colorDot.position.y < checkPoint.y

您可以扩展检查以确保它仍在层次结构中:

if colorDot.parent != nil && colorDot.position.y < checkPoint.y

答案 1 :(得分:1)

当您使用colorDot.removeFromParent()时,colorDot对象仍然有一个位置,除非您删除该对象或覆盖它,否则if colorDot.position.y < checkPoint.y将为true。

尝试添加 if colorDot.parent === self(如果colorDot已添加到self)。