我的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
}
答案 0 :(得分:1)
我没有意识到这段代码确实有效。唯一的问题是游戏重启后游戏会崩溃,因为我会再次将SKShapeNode添加到后台而不删除它。我将Circle.removeFromParent()
添加到了我的restartGame函数中,现在我很好。