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

Auteur Sujet: Collision souris et sprite  (Lu 4119 fois)

0 Membres et 2 Invités sur ce sujet

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Collision souris et sprite
« 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

Bigz

  • Full Member
  • ***
  • Messages: 154
    • Voir le profil
    • Bigz.fr
Re : Collision souris et sprite
« Réponse #1 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. 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Collision souris et sprite
« Réponse #2 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) ?
Laurent Gomila - SFML developer

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Collision souris et sprite
« Réponse #3 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?

Orwel

  • Full Member
  • ***
  • Messages: 208
    • Voir le profil
Re : Collision souris et sprite
« Réponse #4 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).

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Collision souris et sprite
« Réponse #5 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;

}