Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: scipion60 le Avril 18, 2012, 05:06:59 pm

Titre: Collision souris et sprite
Posté par: scipion60 le Avril 18, 2012, 05:06:59 pm
Bonjour,

je reprend votre conversation en cours et je voudrais vous demander s'il existe un exemple avec la SFML permettant de gérer la collision de la souris avec un sprite du jeu?

Je cherche un exemple sur la toile mais je n'est trouvé que des allusions à des méthodes....

Merci d'avance
Titre: Re : Collision souris et sprite
Posté par: Bigz le Avril 18, 2012, 05:26:18 pm
A l'époque 1.6 où le wiki fr existait encore j'avais fais ceci -> http://www.sfml-dev.org/wiki/fr/sources/hit_test (http://www.sfml-dev.org/wiki/fr/sources/hit_test). Du coup si tu utilise la 1.6, ça peut t'aider, sinon, bah faut adapter, vu qu'en 2.0, ça ne fonctionne plus tout à fait comme ça.
Titre: Re : Collision souris et sprite
Posté par: Laurent le Avril 18, 2012, 06:35:45 pm
Tu veux faire une collision approximative (rectangle englobant), ou au pixel près (prendre en compte la transparence du sprite) ?
Titre: Re : Collision souris et sprite
Posté par: scipion60 le Avril 19, 2012, 08:48:58 am
bonjour,

@Bigz merci mais ce n'est pas exactement ce que je cherche.

@Laurent, en fait je cherche au pixel près la détection de la collision.

Pour l'instant ma carte se compose de plusieurs images.

Une sert de fond où les limites des zones sont tracées. Les autres on la même taille que la carte de fond sauf qu'elles contiennent seulement un zone en couleur et le reste est sur fond blanc.

j'y applique la méthode suivante:


 
sf::Texture carte;
sf::Image img ;
sf::Texture region;

carte.loadFromFile("img\\map.png");
img.loadFromFile("img\\1.png");
 img.createMaskFromColor(sf::Color::White);

 region.loadFromImage(img);
  sf::Sprite sprite(carte);
 sf::Sprite sprite1(region);


Comment faire que la detection au pixel fonctionne?
Es ce que je me complique en faisant mes images de cette manière?
Titre: Re : Collision souris et sprite
Posté par: Orwel le Avril 19, 2012, 12:57:10 pm
http://www.sfml-dev.org/old-forum-fr/viewtopic.php?t=3347&highlight=

Réaliser au début de SFML 2, donc adaptable facilement à SFML 1.6

Malheureusement cela ne fonctionne pas avec la R.C de SFML 2, car beaucoup de fonction ont été supprimées ou déplacées(réimplémentable, mais je suis nul avec les matrices).
Titre: Re : Collision souris et sprite
Posté par: scipion60 le Avril 19, 2012, 03:09:56 pm
re bonjour,

une solution que j'ai trouvé, je sais c'est pas si c'est la meilleur ....

je teste le canal alpha, de l'image s'il est a 0 je suis hors de l'image donc je ne clique pas dessus. Mais l'inconvénient de ce système c'est que je doit parcourir toute les images de ma carte afin de tester si je suis dedans.


bool test(){

int test = (int)img.getPixel(Event.mouseButton.x,Event.mouseButton.y).a;

if( test == 0) return true;
else return false;

}