Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Savitruc

Pages: [1] 2 Suivante »
1
Graphique / Re : Changement de textures
« le: Juillet 03, 2016, 10:08:29 am »
J'avais encore fais une erreur que j'ai corrigé (une ligne de setPosition() en trop), je m'excuse, je vais vraiment faire plus attention à partir de maintenant. Sinon les méthodes que vous avez proposées rendent le travail encore moins compliqué, merci beaucoup!

2
Graphique / Re : Changement de textures
« le: Juillet 02, 2016, 11:44:39 am »
Après 20 (vraies) relectures du code et autant de modifications de celui-ci, j'ai effectivement mal rempli ce IntRect parce que je me suis complètement emmêlé les pinceaux en lisant la grille de mon image, je sens que je vais me faire mal, désolé pour ça.
Déjà la texture ça marche, donc c'est cool, mais son positionnement n'est toujours pas correct par contre, le -50 (la valeur que je veux vraiment utiliser est -5) était là pour vérifier que quelle que soit la valeur que l'on donne, -50, -5 ou autre, la petite flamme sera toujours positionnée au même endroit, ce qui n'est pas normal.

3
Graphique / Changement de textures
« le: Juillet 01, 2016, 09:22:38 pm »
Bonjour à tous,
J'essaie d'animer sommairement un sprite pour comprendre la manière d'opérer. Après plusieurs essais infructueux où les textures ne s'affichaient pas correctement, j'ai décidé d'ouvrir un post parce que je deviens fou à chercher mon erreur.
Voici la situation: ici, on essaye d'animer les flammes qui sortent du réacteur de l'avion. Toutes les textures sont sur une seule image en .png et tout les sprites du joueur utilisent cette texture avec des rectangles de sélection différents.
Voici l'image, les deux textures que l'on veut utiliser successivement sont les deux de la première colonne de gauche.

Afin de ne pas surcharger, je ne vais copier que les éléments se rapportant au sprite concerné.

        sf::Sprite playerTopFlames;

        playerTopFlames.setTexture(texture);

        playerTopFlames.setTextureRect(sf::IntRect(1,3,11,5));





        if(frames<120)
        {
            frames++;
        }
        else
        {
            frames=0;
            if(state==0)
            {
                playerTopFlames.setTextureRect(sf::IntRect(4,13,8,5));
                state=1;
            }
            else
            {
                playerTopFlames.setTextureRect(sf::IntRect(1,3,11,15));
                state=0;
            }
        }
        if(state==1)
        {
            playerTopFlames.setPosition(SpritePos.x-50, SpritePos.y+10);
        }
        else
        {
            playerTopFlames.setPosition(SpritePos.x-8, SpritePos.y+10);
        }
        window.draw(playerTopFlames);
        window.draw(player);

On change tout simplement le rectangle que le sprite montre et donc la position du sprite à un intervalle donné, compté ici en frame.
Sauf que le problème est sensiblement le même qu'avec les autres méthodes que j'ai testées (changer la texture au lieu de l'actualiser, par exemple, en travaillant avec deux textures), le premier affichage fonctionne:

Puis, alors que je peux jurer avoir vérifier les coordonnées 20 fois, le sprite s'actualise, mais est mal placé:

Et enfin, les deux textures fusionnent.

Et on alterne entre l'avant-dernière et la dernière image.
Je ne comprends pas du tout ce que je fais de mal et j'apprécie tout aide.
Merci!

4
Ah, merci! Je comprends mieux maintenant.

5
Je me permet de bump.

6
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?

7
Graphique / Re : Manière la plus appropriée de gérer des sprites
« le: Avril 21, 2016, 07:41:51 pm »
Merci beaucoup!
 :D

8
Graphique / 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?

9
Fenêtrage / Re : Quelles coordonnées pour un sf::Rect?
« le: Mars 30, 2016, 09:14:39 pm »
Oui enfin c'était une idée vite fait hein :p
Pis bon, maintenant je comprends, et comme je dois être le seul tout les 5 ans à demander ne t'embête pas pas trop, c'est déjà assez gentil de m'avoir aidé.

10
Fenêtrage / Re : Quelles coordonnées pour un sf::Rect?
« le: Mars 30, 2016, 01:42:17 pm »
A moins qu'il y ai une subtilité que j'ai n'ai pas saisi, pourquoi ne pas le dire de cette manière?

Citer
sf::Rect(topLeftX, rectTopLeftY, rectWidth, rectHeight)
Define a rectangle by its top-left corner x and y coordinates, its width and its height.

11
Fenêtrage / Re : Quelles coordonnées pour un sf::Rect?
« le: Mars 28, 2016, 06:34:30 pm »
Bah écoute merci beaucoup, je trouve juste que c'est assez mal formulé. Mais disons que c'est un problème de ma part.
Allez, j'y retourne.  :P

12
Fenêtrage / Re : Quelles coordonnées pour un sf::Rect?
« le: Mars 28, 2016, 10:19:38 am »
Si j'essaie de reformuler le problème, la documentation dit:
Citer
A rectangle is defined by its top-left corner and its size.


==>Ca je comprends sans problème.

Citer
rectLeft Left coordinate of the rectangle
rectTop Top coordinate of the rectangle


==>Ca je comprends pas.

Si comme l'a dit G.
Les 2 premières variables c'est pas 2 points, c'est la coordonnée X et la coordonnée Y du coin haut-gauche du rectangle.

Alors je trouve que c'est assez compliqué et mal dit, je veux dire j'ai pas vraiment de problème avec l'anglais mais là, je comprends pas quoi correspond à quoi.

13
Fenêtrage / Quelles coordonnées pour un sf::Rect?
« le: Mars 25, 2016, 08:25:42 pm »
Bonjour,
Je veux avant tout m'excuser pour la stupidité de ma question qui doit paraître ridiculement simple mais je ne comprends pas le fonctionnement de sf::Rect.
La documentation dit de construire sf::Rect comme ceci:
sf::Rect(rectLeft, rectTop, rectWidth, rectHeight)
Sauf que la documentation dit aussi que pour les deux premières variables, ils faut entrer UNE  coordonnée. Pas deux. Or les deux premières variables sont des points. Et il me semble impossible de déclarer un point sans indiquer sa position dans l'axe des abscisses ET des ordonnées.

Je le redis que je vais me taper sur le crâne dès que je verrai la solution mais pour l'instant je remercie quiconque m'accordera un peu de son temps.
Merci.

14
Graphique / Re : Texture non-visible
« le: Mars 19, 2016, 09:59:49 am »
Non, on s'est mal compris. Le tutoriel ne montre que des fragments de code en rapport avec la fonction étudiée, et j'ai bêtement copié en pensant que ça fonctionnerait en oubliant d'ajouter le window.dsiplay().
My bad!

15
Graphique / Re : Texture non-visible
« le: Mars 17, 2016, 05:22:09 pm »
C'est juste que comme le cours http://www.sfml-dev.org/tutorials/2.3/index-fr.php là ne contient pas la ligne window.display, j'ai oublié de l'écrire moi-même, mais c'est mon erreur.

Pages: [1] 2 Suivante »