В моей игре SK У меня есть ракеты, которые стреляют, и каждый получает SKEmitterNode
, что создает эффект дымовой тропы. Как только ракета попадает на что-то, я вызываю removeFromParent
, и это также удаляет излучатель, который мгновенно удаляет дымовую дорожку. Я хочу, чтобы дымовая тропа придерживалась, пока частицы не рассеиваются.Сохранение частиц после уничтожения излучателя
Я не понимаю, почему этого не происходит, даже если для targetNode
установлено значение self.scene
. Я взял узел эмиттера, создал массив со всеми его children
и вызвал count
до NSLog
, сколько у него детей и вернулся ... ноль. Кажется, что все частицы должны быть детьми самой сцены, поэтому, когда излучатель удаляется со сцены, это частицы не должны быть, потому что это не дети.
Я пробовал много, много разных способов сделать это, и никто из них не работал.
Все, что я хочу для каждой ракеты, имеет излучатель, который оставляет дымовую дорожку, а когда ракета разрушена, дымовая тропа остается, когда она рассеивается. Но I не может позвонить removeFromParent
на ракете, не разрушив его тоже!
Вы можете вручную заставить дым рассеиваться. Идея состоит в том, что ... Ракета ударяет цель, задерживает задержку, уменьшает количество испущенных узлов, задерживает силу, уменьшает количество испускаемых узлов, повторяет до тех пор, пока не будет желательным, а затем удалит излучатель. Вы достигнете этого с чередой skactions. Я могу добавить ответ с кодом через час или около того, если вы заинтересованы в этом подходе. Это не потребует большого количества кода. – meisenman
Сделайте emitterNode собственностью ракеты. Добавьте излучателя в качестве ребенка на сцену. Когда ракета взрывается, удалите ракету.В качестве альтернативы, держите излучатель в качестве ребенка ракеты и просто установите альфа-ракету на 0, что делает ее полностью прозрачной, а затем удалите ракету после рассеивания излучателя. – prototypical
Первый подход все равно не создаст рассеивающего эффекта. Второй подход также не создаст эффект рассеивания (он будет иметь тот же эффект, когда частицы просто исчезнут при удалении излучателя), а также оставит вашу ракету восприимчивой к контактам и столкновению, если вы не измените категориюBitMask. – meisenman