Gérer plusieurs sprites.. CCSpriteSheet ?

MacInTouchMacInTouch Membre
04:40 modifié dans Apple Developer Programs #1
Bonjour,

j'utilise actuellement Cocos2d pour créer des petits jeux. Je code actuellement un jeu du type "Space Invaders".

J'ai déjà  mon vaisseau, qui peut tirer des projectiles. J'ai également ajouté un ennemi, qui lorsqu'il est touché, disparait.

Mon problème est que j'aimerais pouvoir gérer plusieurs sprites pour tous les ennemis présents, comme dans le jeu original.

Pour cela comment dois-je procéder ?

Tous ces ennemis seront crées à  partir de la même image, donc je veux créer une boucle pour tous les créer et les ajouter en un coup.
Pareil pour vérifier si le projectile touche un ennemi, je veux quelque chose de simple du style "si le CGRect du projectile intersecte le CGRect d'un ennemi, alors ce dernier disparait".

C'est là  que je ne vois pas quoi utiliser. Est-ce que c'est dans ces cas qu'intervient un CCSPriteSheet, pour gérer plusieurs sprites, et si oui comment l'utiliser ?

Réponses

  • GreensourceGreensource Membre
    août 2010 modifié #2
    Pour les Sprites, est-ce que tu ne peux pas gérer ça avec UIImageView et sa property animationImages?

    Pour les CGRect tu as des fonctions qui font ça, regarde dans CGGeometryAddition un truc comme ça.

    [edit] c'est dans CGGeometry

    CGRectIntersectsRect
    Returns whether two rectangles intersect.

    bool CGRectIntersectsRect (
      CGRect rect1,
      CGRect rect2
    );
  • DrakenDraken Membre
    04:40 modifié #3
    Utilises un NSMutableArray pour stocker la liste des ennemis présents sur l'écran.

    Et une boucle pour afficher chaque sprite sur l'écran


    // AFFICHAGE DU JEU<br />//<br />// Dessin du décor de fond (fond d&#39;étoiles)<br />.....<br />// Dessin des ennemis<br />// Boucle parcourant le NSMutableArray, dessinant chaque ennemi actif<br />....<br />// Dessin du vaisseau du joueur<br />....<br />// Dessin du projectile<br />...<br />// BASCULEMENT DE L&#39;ECRAN OPENGL (Je ne sais pas comment cela se fat avec Coco2D)<br />....<br />
    


    Après l'affichage, gère le comportement des objets: déplacement des objets, tests de collisions et destruction éventuelle d'un objet

    // DEPLACEMENT DU VAISSEAU<br />....<br />// DEPLACEMENT DU PROJECTILE<br />....<br />// DEPLACEMENT DES ENNEMIS (En parcourant la liste NSMutableArray)<br />.....<br /><br />// BOUCLE DE GESTION DES COLLISIONS PROJECTILE/ENNEMIS (en testant les positions comme le dit Green)<br />// En parcourant la liste NSMutableArray et en comparant à  chaque fois la position du projectile et d&#39;un ennemi<br />// Si collision =&gt; Destruction Projectile et Destruction ennemi (en le retirant du NSMutableArray)<br /><br />// BOUCLE DE GESTION DES COLLISIONS ENNEMIS/VAISSEAU JOUEUR<br />// Même principe que les collisions projectile/ennemis<br />// Si collision =&gt; END OF GAME ! <br />
    


    C'est sommaire, mais te donnes une idée des choses à  faire. Pense aussi à  tester le nombre d'ennemis restant avant chaque boucle d'affichage. S'il vaut 0, il n'y a plus d'aliens et le joueur a gagné  <3 .<br />
  • MacInTouchMacInTouch Membre
    août 2010 modifié #4
    Merci pour ces réponses !

    Je vais suivre le schéma de Draken. Pour "CGRectIntersectsRect" c'est bien ce que je comptais utiliser, mais je suis obliger de créer un CGRect autour de chaque sprite et ensuite de tester les intersections ?

    Pas moyen de tester directement la collision entre 2 sprites ?  ::)
  • DrakenDraken Membre
    04:40 modifié #5
    Le CGRect n'est pas un objet graphique, juste une structure de donnée permettant de connaà®tre la position d'un objet sur l'écran. Je ne sais pas comment fonctionne Coco2D, si cela se trouve il y a une classe de sprite permettant de connaà®tre directement la position de l'objet sur l'écran. Dans ce cas tu peux comparer directement les positions de deux sprites.

Connectez-vous ou Inscrivez-vous pour répondre.