У меня есть сцена, где метеоры (SKSpriteNodes) падают с трассами (SKEmitterNodes). Каждый из этих метеоров имеет уникальное имя, которое соответствует названию его следа.
Вы можете сбить эти метеоры, и они удаляются при контакте с пулей. Чтобы удалить сопровождающий след метеора, я перебираю все существующие узлы и удаляю тот же, что и у метеора.
Это внезапное «исчезновение» следа выглядит неестественно, поскольку я хочу, чтобы частицы, которые уже были испущены, закончили свой цикл. Поэтому я написал следующее:
for child in children {
if child.name == meteorite.name {
child.particleBirthRate = 0 //Stops new particles from being created
delay(2) {
child.removeFromParent()
}
}
}
Компилятор XCode возвращает:
У значения типа 'SKNode' нет члена 'elementBirthRate'
Я не уверен, как обойти это, так как я знаю, что узел с тем же именем должен быть SKEmitterNode, но, очевидно, компилятор не может этого знать, и поэтому возвращает ошибку.