IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Collision


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut Collision
    Bonjour a tous j'aurais besoin d'aide sur un problème que je rencontre avec mon jeu de carte que je me suis fait en SDL.
    pour expliquer le problème rapidement quand j'arrive avec la souris sur une de mes cartes je regarde s'il y a contact et s'il y en a un je fait monter la carte. Jusque la tout va bien et tout fonctionne. Mon problème survien quand j'arrive sur le coins de ma carte dans le fond en bas ou il y avait normalement la carte et bien elle se met a monter et redescendre et d'après ce que j'ai remarqué le programme n'a pas lair d'etre capable de comprendre la fin de mon if qui est :


    if( ( x > sideCards[i]->box.x ) && ( x < sideCards[i+1]->box.x) &&
    ( y > sideCards[i]-> box.y ) &&
    ( y < sideCards[i]-> box.y + sideCards[i]->box.h ) )

    quand il collisionne la première fois il augmente le box.h pour augmenter la zone ou il est sencé toucher la carte mais comme il n'a pas l'air de comprendre le dernier et de mon if et bien je crois qu'il saute par dessus et exécute comme si la condition était vraie.
    Vous êtes mon dernier recours et ca fait une semaine je cherche a comprendre ce bug :S sinon ben je redonnerai mon travail avec ce bug
    p.s. mon prof n'a pas réussi a m'aider non plus alors j'essaie de me tourner vers vous si vous avez des sugestion je suis ouvert merci à tous si vous avez lut ce message bonne journée

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut

    Si j'ai bien compris, ton problème est que lorsque tu survoles la carte avec ta souris, elle se décale vers le haut (pour être mise en valeur) et du coup lorsque tu touches la carte en bas, la souris n'est plus dessus (puisque la carte monte) et la carte redescend par conséquent (puis remonter, etc).

    Tu as alors essayé d'augmenter la hauteur pour régler le problème, ce qui est une bonne idée. Mais ça ne marche pas... tu serais pas en mutli thread par hasard ?

    Dans ton programme SDL, je suppose que tu as une boucle infinie qui fait le rendu et calcule les collisions. Si tu augmentes la hauteur comme tu dis, es tu bien sûr que cette modification sera bien faite avant que la boucle de détection de collision ne passe dessus ? Dans le même thread ?

    Par exemple, essaye de changer la hauteur avant de décaler la carte vers le haut (et de l'abaisser après que la carte soit descendue).

    Pour débuguer, je te conseille de dessiner en plus des cartes un cadre rouge de la taille de la zone de collision. Tu pourras l'enlever quand tout fonctionnera. Si le déplacement ou le changement de hauteur est incorrect, tu verras immédiatement comment et dans quelle direction.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut
    j'ai retesté avec des SDL_fillbox pour voir jusqua ou le tout s'étendais la box et la box de mon SDL_Rect se rend bien à l'endroit voulu et avec les box rempli je n'ai pas de problème jai seulement remplacé le moment du blit par un fill box donc en théorie c semsé être la même boucle qui s'exécute mais quand c'est ce n'est pas un blit ça fonctionne très bien je me rend a l'endroit désiré en augmentant le heigh de celle-ci. Pour le multi thread je ne peux pas te répondre puisque je ne suis pas vraiment sur de ce que c'est :S lol
    Sinon ca me ramène encore a croire sur ma condition qui ne se prend pas corectement mais merci beaucoup en passant du temps que vous avez consacré à me répondre

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Hmm ca ne serait pas un truc du style : il pense que la souris n'est plus sur la carte sélectionnée donc il la redescend, donc il voit qu'il est sur cette carte, donc il la remonte, puis il voit qu'il n'est plus sur la carte sélectionnée donc il la redescend, etc. ?

    Jc

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut
    Salut oui c'est bien le problèeme qui se passe mais quand je l'ai essayé avec le fillRect pour justement voir la zone de détection du rect et bien dans ce temps la ya aucun problème c ca qui me mêle encore plus ya juste quand j'affiche une carte que ca marche pas si c'est juste du noir tout est parfait donc oui c'est ce que tu dit mais juste quand c un image qui est blitté

Discussions similaires

  1. algorithme de collision 3D
    Par chetropinchuste dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/02/2010, 13h16
  2. [java3D][collision]
    Par geofun dans le forum 3D
    Réponses: 7
    Dernier message: 12/02/2007, 14h49
  3. Test de collision en 2D
    Par GLDavid dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/02/2004, 10h12
  4. Gestion des collisions - terrains
    Par Dranor dans le forum DirectX
    Réponses: 1
    Dernier message: 26/06/2003, 18h50
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo