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.


Sujets - Savitruc

Pages: [1]
1
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!

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

3
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.

4
Graphique / Texture non-visible
« le: Mars 15, 2016, 01:33:05 pm »
Bonjour, j'ai récemment découvert SFML et j'a idécidé de suivre les tutoriels et de les tester en même temps sur mon Code::Blocks afin de me familiariser avec la syntaxe. Cependant, en essayant de créer une texture, de lui assimiler une image et d'afficher le sprite contenant cette texture, rien ne se passe. Le programme est juste une fenêtre blanche sans aucune contenu.
Voici le code relativement simple, le nom de l'image à charger est Big_Arms.jpg et elle se trouve dans le même dossier que le projet.
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{

    sf::RenderWindow window(sf::VideoMode(800, 800), "Test", sf::Style::Default);


    while (window.isOpen())
    {

        sf::Event event;
        while (window.pollEvent(event))
        {

            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear(sf::Color::Black);

        sf::Texture texture;
        if(!texture.loadFromFile("Big_Arms.jpg"))
        {
            std::cout << "Error: unable to load image Big_Arms.jpg" << std::endl;
            return -1;
        }
        sf::Sprite sprite;

        sprite.setTexture(texture);
        window.draw(sprite);
    }

    return 0;
}

Merci d'avance pour votre aide, j'en suis très reconnaissant.

Pages: [1]