2013-11-09 8 views

Odpowiedz

7

Można obliczyć, kiedy emiter jest gotowy.

Na przykład, jeśli numParticlesToEmit jest ustawione na 1000, a particleBirthRate ma wartość 100, cząstka zostanie wykonana, wysyłając nowe cząstki po 10 sekundach. Następnie musisz dodać particleLifeTime z połową particleLifeTimeRange, aby uwzględnić fakt, że cząsteczki czasu pozostaną na ekranie. Następnie emiter nie tylko emituje nowe cząstki, ale także ostatnią i/lub najdłużej emitowaną cząstkę zostanie usunięta z ekranu.

Zakładając em to emiter:

CGFloat seconds = em.numParticlesToEmit/em.particleBirthRate + 
        em.particleLifetime + em.particleLifetimeRange/2; 

Następnie można wykonać selektora z czasem oczekiwania lub uruchomić akcję z danym zwłoki być powiadomiony, gdy emiter cząstek jest wykonywana.

+0

O wiele lepsze rozwiązanie, zupełnie błędnie przeczytałem pytanie iz jakiegoś powodu myślałem, że numParticlesToEmit było nieznane. Matematyka jest cudowna. – prototypical

0

Nie jestem w stanie znaleźć sposobu na sprawdzenie liczby aktywnych cząstek. Myślałem, że może to było możliwe z własnością dzieci dziedziczy po SKNode, ale to nie działa.

zauważył, że właściwość particleAction AN SKEmitterNode, który zawiera ten blurb:

Dodawanie skomplikowanych działań cząstek może poważnie wpływać na osiągi emitera cząstek. Ponadto, ponieważ cząstki nie istnieją jako jawny węzeł, którym można manipulować, nie można usunąć akcji z istniejących cząstek.

Jest możliwe, że możesz wykorzystać SKAction performSelector do powiadamiania o aktywnych cząsteczkach. Kiedy skończy się ten strumień, możesz założyć, że nie pozostały żadne cząstki.

Niezbyt eleganckie lub idealne rozwiązanie w żaden sposób, a ja sam byłbym zainteresowany lepszym rozwiązaniem na pewno.

Powiązane problemy