在游戏过程中不断改变SKShapeNode的色彩属性(Swift)

时间:2015-10-08 17:19:18

标签: swift animation sprite-kit skshapenode

我的spritekit游戏背景中有一个使用swift的SKShapeNode var Circle = SKShapeNode(circleOfRadius: radius)。圆圈是出于美学目的,所以没有任何东西与它相互作用。我希望Circle.strokeColor能够随时改变。我当前的代码更改了SKShapeNode的笔触颜色属性,但它不显示颜色更改,因为我在将属性添加到背景后更改了属性。整个游戏中的颜色保持不变,直到游戏结束,并且从背景中移除圆圈然后重新创建。每次更新函数运行时,我的代码通过向var colorTime: CGFloat = 0.0添加1来更改颜色,然后使用该colorTime变量将Circle的颜色的RGB值与余弦函数相关联。如何连续更改(和显示)圆圈的颜色?

override func update(currentTime: CFTimeInterval) {


    if last_update_time == 0.0 {
        delta = 0
    } else {
        delta = currentTime - last_update_time
    }
    last_update_time = currentTime

    colorTime += 100
    redColor = (cos(colorTime/100)+1)/2
    greenColor = (cos(colorTime/200 - 2.09)+1)/2
    blueColor = (cos(colorTime/300 - 4.18)+1)/2
    circleColor = UIColor(red: redColor, green: greenColor, blue: blueColor, alpha: 1)
    Circle.strokeColor = circleColor
}

1 个答案:

答案 0 :(得分:1)

我没有意识到这段代码确实有效。唯一的问题是游戏重启后游戏会崩溃,因为我会再次将SKShapeNode添加到后台而不删除它。我将Circle.removeFromParent()添加到了我的restartGame函数中,现在我很好。