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

XNA/Monogame Discussion :

[XNA] Collisions et rebonds


Sujet :

XNA/Monogame

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Points : 63
    Points
    63
    Par défaut [XNA] Collisions et rebonds
    Bonjour à tous,

    je suis en train de réaliser un petit casse briques en XNA, et je me trouve face à un problème apparament simple, mais pour lequel je ne trouve pas de solution évidente.

    Autour de chacune de mes briques, j'ai une boundingBox, et j'ai une boundingSphere autour de la balle.

    J'arrive à détecter la collision, mais je ne sais pas dans quel sens faire rebondir la balle : elle doit avoir un comportement différent si elle touche le dessus, le dessous, un coté, ou même un coin de la brique.

    Comment peut-on savoir sur quel coté(s) de la boundingBox la BounddingSphere est entrée en collision ?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par romain69005
    Comment peut-on savoir sur quel coté(s) de la boundingBox la BounddingSphere est entrée en collision ?
    Tu n'as pas forcément besoin de le savoir :

    Prend le centre du cercle et compare le avec les bords de la boîte.

    Cela te donnera toutes les informations dont tu as besoin.

    Jc

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Salut

    Subdivise le rectangle en 4 segment et faite le traitement pour chaque segment , pour de la collision c'est simple car cest purement geometrique calcule la distance entre le centre C du cercle au point de projection othogonale sur le segment avec la condition qui ne doit pas etre inferieur au rayon du cercle sinon il ya penetration , pour la mis à jour des vitesses si le cercle n'entre pas en contacle avec l'une des limites du segment
    projete le vecteur vitesse sur la normale du segment et la tangent apres faite inverser le signe du vecteur normal avec un multiplicateur alpha compris ent 0 et 1 ( 0:perte d'energie cinetique considerable , 1:choc elastique parfait aucune perte ), pour des coins c'est une singularité à cause de la non existente d'une normale en ce point pour cela calcul le point H de la projection s'il se trouve à l'exterieur du segment et la distance CB<= Rayon alors la condition est remplie pour ce cas puis projete le vecteur vitesse sur le vecteur CB
    C: centre du cercle B: le coin du segment et aussi sur la normale de ce dernier et refait la meme chose pour le vecteur vitesse et le tour et joué

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Points : 63
    Points
    63
    Par défaut
    OK, merci pour vos réponses. :-)

    Mais avant de vous lacher, une dernière chose : si je suis obligé de faire ce genre de calculs pour un cas simple comme le rebond, quel est l'intérrêt des boundingBox ?

    Je pensais que ce genre de composant devait justement m'éviter de réinventer la roue...

Discussions similaires

  1. Détection de collisions et rebonds
    Par arklif dans le forum XNA/Monogame
    Réponses: 5
    Dernier message: 28/04/2012, 10h54
  2. Collision Detection XNA
    Par Yondaime2a dans le forum C#
    Réponses: 2
    Dernier message: 06/01/2010, 14h16
  3. [XNA] Détection de collision
    Par Scalp4 dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 25/04/2008, 11h25
  4. [XNA]Comment gerer les collisions ?
    Par Invité dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 31/03/2008, 12h32
  5. [XNA] - Collision
    Par Sieldev dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 22/03/2008, 20h00

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