Question

Une partie de mon application montre un paysage, mais il est un peu ennuyeux que de maintenant.Je suis donc à la planification pour animer certains des particules par rapport à l'écran (pensez à quelque chose comme de minuscules ailes - http://www.youtube.com/watch?v=DpmcX-rWGfs).Cependant, je n'ai pas encore trouvé tout intégré dans un système de particules;Comment puis-je faire cela en mémoire de manière efficace?J'ai déjà mis en place mon propre système d'animation pour quelques nuages animation sur le paysage à l'aide de CADisplayLink, et c'est un peu lent (même si j'ai de l'espoir pour le rendre plus rapide bientôt).Un autre très lourd système, comme l'animation de 20 petits points en même temps je suppose, probablement casser.

Était-ce utile?

La solution

Je n'ai pas encore trouvé tout intégré dans un système de particules;

Il y a plusieurs "Libre" des projets qui intègrent des systèmes de particules, vous pouvez visiter ce tutoriel vidéo pour un Système de Particules qui sera plus que suffisante pour les besoins que vous mentionnez.Cette façon de faire un système de particules est pratiquement la même manière que Cocos2d est à l'aide, afin de regarder le tutoriel, puis télécharger les fichiers du projet, vous pouvez facilement intégrer leur Émetteur de Particules dans votre projet.

Comment puis-je faire cela en mémoire de manière efficace?

Je vous recommande de vous à l'aide de la "Objet De La Piscine De Modèle", en gros vous préallouer un "Pool" de particules, disons 1000 objets.Ensuite, votre émetteurs, demander à la piscine pour les particules lorsqu'elles en ont besoin.Si la piscine est vide, vous pouvez gérer le dossier en conséquence.Cela peut ne pas être efficace à partir d'un point de vue de la mémoire, mais il est très efficace de la performance sage ( pour éviter réel de la répartition du temps de nombreux petits objets comme des particules ).

Quelques suggestions, lorsque vous déclarez votre structure des particules essayer d'être léger et aligné des puissances de 2 ( ce qui fera de votre structure de plus de cache de l'environnement ), celui-ci est de 32 octets:

struct Particle 
{
    CGPoint position;
    CGPoint speed;  
    float life;
    float decay;
    unsigned short index;
    unsigned char color_R;
    unsigned char color_G;
    unsigned char color_B;
    unsigned char color_A;
    unsigned char rotation;
};

Mais en fonction de vos besoins, cela peut être beaucoup plus petite, peut-être que vous n'avez pas vraiment besoin de la couleur/index/etc.Vous devez évaluer vous-même.

Enfin, je vous recommande de jeter un oeil à cocos2d CCParticleSystem de la classe, vous pouvez télécharger le code ici.Leur mise en œuvre n'est pas léger, mais il est très flexible et peut atteindre de très jolis effets.

Bonne chance avec vos particules :)

Autres conseils

Vous devriez consulter le nouveau livre iOS Recipes écrit par Matt Drance:

http://pragprog.com/titles/cdirec/ios-recipes

Parmi les recettes, il y en a une pour utiliser le CoreAnimation CAReplicatorLayer intégré pour créer un émetteur dans "Construire un émetteur simple".

Le livre est toujours en version alpha, mais si vous l'achetez maintenant, vous recevrez des mises à jour dès qu'il est terminé.

Cocos2D est un moteur graphique 2D qui utilise OpenGL ES 1 pour le rendu.Il est livré avec un système de particules intégré.Le code du moteur de particules est assez simple.Il utilise des VBO pour dessiner des quads texturés pour les particules.Vous devriez pouvoir adapter cela à vos propres besoins.

Si vous souhaitez cibler iOS5 et supérieur, vous pouvez utiliser les fonctionnalités intégrées du système d'exploitation, qui est CAEmitterLayer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top