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 - clavos

Pages: [1]
1
Graphique / Problème de collision entre deux CircleShape
« le: Février 22, 2014, 04:29:56 pm »
Bonjour !  :)
Je suis encore un débutant en SFML, et j'essaye donc de me familiariser avec en essayant diverse chose.

Dans une fenêtre j'ai crée deux CircleShape ( un vert que je peux déplacer par des évé,ements que j'ai fait, et un rouge qui lui est immobile ). Mon but était de déplacer ce point vert et de l'emmener vers le point rouge. A ce moment, lors de la collision entre les deux point, je ne suis plus censé pouvoir déplacer le point vert dans la direction du point rouge ( il est bloqué par le point rouge ).

Cependant ca ne marche pas, et mon point vert peux traverser mon point rouge :(

Voici la création de mes deux CircleShape :
CircleShape cercle2(70);//Création du point rouge immobile
        cercle2.setFillColor(Color::Red);
        cercle2.setPosition(330,130); // On place le point rouge au centre de ma fenêtre
        FloatRect box2 = cercle2.getGlobalBounds();//On récupère le cadre autour de la forme

        CircleShape cercle1(50);// Création du point vert déplacable
        cercle1.setFillColor(Color::Green);
        FloatRect box1 = cercle1.getGlobalBounds();//On récupère le cadre autour de la forme
 
Le cercle vert a pour coordonnées (d,e) :)

Et voici par exemple l'événement que j'utilise pour déplacer mon point vert à droite :
                if (sf::Keyboard::isKeyPressed(Keyboard::Right))//Déplacement vers la droite
                {
                        if (d<700 && !(box1.intersects(box2))) {        d=d+1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                }
Je précise que le " d<700 " est un test pour que le point ne sorte pas de la fenêtre :)

Bref, je ne vois pas le problème  :(
Si vous le souhaitez je peux vous fournir le code en entier, il n'est pas très long, et je l'ai commenté.

Merci d'avance !  :)

Pages: [1]