Если вы хотите, чтобы все 4 одновременно появлялись после задержки:
func setColors() {
let seq = [SKAction.wait(forDuration: 0.3),SKAction.fadeIn(withDuration: 0.5)]
for color in boyColors {
color.run(SKAction.sequence(seq))
}
}
Если вам нужно, чтобы они постепенно появлялись:
func setColors() {
var seq = [SKAction]()
let wait3 = SKAction.wait(forDuration: 0.3)
let wait5 = SKAction.wait(forDuration: 0.5)
let fadeIn = SKAction.fadeIn(withDuration: 0.5)
for color in boyColors {
let colorFadeIn = SKAction.run({color?.run(fadeIn)})
let group = [wait5,colorFadeIn]
seq.append(wait3)
seq.append(SKAction.group(group))
}
scene.run(SKAction.sequence(seq))
}
То, что это делает, позволяет вашей сцене (или любому узлу, который вы хотите запустить действия) контролировать, когда начинается событие исчезновения. Это предполагает, что все узлы работают с одинаковой скоростью. Если вам нужно, чтобы узлы работали на отдельных скоростях, вам понадобится нечто более сложное, например, в предложении SomaMen, которое объединяет действие следующих цветов в конец текущего цвета. Вам также нужно будет проверить, существует ли цвет в этом отношении, потому что, если вы сделаете цепочку, подобную RGBY, и удалите G, единственный цвет, который будет срабатывать, это R.