Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Manière la plus appropriée de gérer des sprites  (Lu 2972 fois)

0 Membres et 1 Invité sur ce sujet

Savitruc

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Manière la plus appropriée de gérer des sprites
« le: Avril 20, 2016, 08:23:08 pm »
Bonjour à tous,
Je veux créer un shoot em' up en scrolling horizontal, et il y aura donc des ennemis utilisant tous les mêmes caractéristiques qui seront créés au fur et à mesure du niveau, pouvant eux-mêmes appeler une fonction créant un objet de type projectile afin d'attaquer.
Cependant je me demandait comment faire pour gérer tous ces sprites qui seront créés et détruits pendant le jeu: est-ce que je les stocke dans un vector<sf::Sprite> et je vérifie le contenu de chaque case du vecteur, pour effectuer des actions en fonctions de ce contenu (par exemple, en admettant qu'on ai une classe Fireball, quelque chose comme
for(int i(0); i<SpriteVector.size(); i++
{
if(SpriteVector[i] == Fireball)
{
move(1,0);
}
}
ou bien il y a (je m'en doute) une autre manière de faire?

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #1 le: Avril 20, 2016, 08:33:36 pm »
il y a effectivement plein de méthodes , la première qui me viens à l'esprit, un scenenode , ou chaque node dérive de sf:transform, avec une gestion des game state un peu dans ce style : http://blog.nuclex-games.com/tutorials/cxx/game-state-management/. ou chaque state peu contenir un vector de node par exemple.

 

Savitruc

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #2 le: Avril 21, 2016, 07:41:51 pm »
Merci beaucoup!
 :D

Savitruc

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #3 le: Mai 03, 2016, 09:43:49 pm »
Heu, en fait, après avoir recherché un peu, j'ai bien compris cette histoire de GameStates, mais j'arrive pas à comprendre ce qu'est une scenenode. Du coup j'avais essayé de faire ça de la manière suivante:
   
std::vector<sf::Sprite> SpriteVector;    

for(int i(0); i<SpriteVector.size(); i++)
        {
            if(std::find(SpriteVector[i], SpriteVector[i+1], Fireball))
            {
                SpriteVector[i].move(15,0);
            }
        }
En admettant que l'on ai une classe Fireball, vu que j'ai vu qu'il fallait chercher ainsi si telle case d'un conteneur contenait tel objet ou valeur. Cependant, le compilateur me sors l'erreur
Error: expected primary-expression before ')' token
à la ligne du if.
Quelqu'un sais ce que je fais mal?

Savitruc

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #4 le: Mai 09, 2016, 10:27:04 am »
Je me permet de bump.

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #5 le: Mai 09, 2016, 09:57:38 pm »
une "scenenode" est comme son nom l'indique , un noeud de scene.
chaque noeud possède un parent et facultativement des enfants , sauf pour le noeud racine (root) qui ne possède pas de parent. voit cela comme un arbre. il y a un livre sur la SFML qui traite très bien le sujet , je te le recommande : https://www.packtpub.com/game-development/sfml-game-development

L'avantage premier d'un tel système , c'est que les enfants subissent les transformation du/des parents , je vais pas faire un pavé la dessus , le net regorge de ressources :


Savitruc

  • Newbie
  • *
  • Messages: 17
    • Voir le profil
Re : Manière la plus appropriée de gérer des sprites
« Réponse #6 le: Mai 12, 2016, 06:52:47 pm »
Ah, merci! Je comprends mieux maintenant.