Bonsoir,
Me voici avec un petit problème que je pige pas, pour résumer j'ai un vector de sf:FloatRect et la position de la souris en temps réel.
J'ai fais une boucle pour savoir si la souris est en collision avec chaque box.
Dans la boucle j'ai mis des sf::text etc ... et tout fonctionne bien.
Mais j'ai voulu rajouté un bool pour m'afficher si ça touche ou pas (je vais m'en servir plus loin dans le programme de ce bool)
Le problème il se met à true seulement au dernier élément du vector, quand je passe la souris sur les premiers sprites, le bool reste à 0 et quand je la passe sur le dernier ça passe bien à 1.
Je ne comprend pas ce qu'il se passe même si je pense que c'est tout bête ...
J'ai mis les 2 lignes de commentaires à propos de ce bool
void Gui::collision_souris_sprite_entite(sf::RenderTarget &target, std::vector<sf::FloatRect> &box_entite, sf::View &vue, std::vector<Entite> &total_entite, bool clic_gauche)
{
for(unsigned int i = 0; i < total_entite.size(); i ++)
{
if(box_entite[i].contains(pos_souris_vue))
{
touche_entite = true; // <-----Ici je met bien à true si je touche
infos[0].setString(total_entite[i].recup_pseudo());
infos[0].setCharacterSize(20);
infos[0].setPosition(vue.getCenter().x + 400, vue.getCenter().y);
infos[1].setString(total_entite[i].recup_vie());
infos[1].setCharacterSize(20);
infos[1].setPosition(vue.getCenter().x + 400, vue.getCenter().y + 50);
for(unsigned char j = 0; j < 2; j++)
target.draw(infos[j]);
//Si clic gauche sur la cible, on récupère les infos
if(clic_gauche)
{
cible = new sf::Text();
pseudo_cible = total_entite[i].recup_pseudo();
cible->setString(pseudo_cible);
entite_cible_actuel = total_entite[i];
}
}
else
touche_entite = false; // <---- Ici je remet à false si je touche pas
}
}
merci d'avance