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

 C++ Discussion :

Conseil & Piste - Gestion des mouvement et collision


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut Conseil & Piste - Gestion des mouvement et collision
    Bonjour,

    Dans le but d'acquérir de l'expérience et des notions je me suis lancer dans la programmation d'un jeu en C++ avec la librairie graphique SDL.

    Je bute actuellement sur la notion des collision.

    En réalité, mon jeu comporte un vaisseau spatial (capable de se mouvoir à l'infinie sur 360°) et des astéroïdes. Le but est de détruire les astéroïde (rien de bien révolutionnaire).

    Le probleme qui se pose est de savoir comment gérer les collision entre les différents acteur ?
    En l'occurrence, je cherche juste a traiter le cas de la collision entre le vaisseau et les astéroïdes.

    J'ai dabord penser a ceci.

    Lorsque le vaisseau bouge, je met a jour ses coordonné.
    Puis je met a jour les coordonné des astéroïde et j'utilise une détection au pixel-perfect (grâce a la librairie SGE) afin de savoir si oui ou non il y a collision.

    De prime abord, cette solution me paraissait satisfaisante.
    Mais imaginons le cas suivant :

    Le vaisseau se situe en un point quelconque. A 30 pixel a droite, il y a un astéroïde. Si mon vaisseau se déplace de 60 pixel vers la droite d'un coup, il va littéralement traverser l'astéroïde sans pour autant qu'une collision soit détecté.

    J'ai imaginé plusieurs procédés, mais aucun ne me satisfait vraiment, et me parait trop complexe a mettre en œuvre.

    C'est ici que je m'en remet a vous

    Dans le cas d'un jeu en temps reel ou les vitesse son suffisamment élever pour que le cas cité dessus se produise, quel algorithme mettriez vous en place ?

    Merci de votre lecture.

  2. #2
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    Perso je tracerais un segment entre le point de départ et le supposé point d'arrivée. S'il ce segment coupe un objet alors une certaine action doit être exécutée ( exploser, immobiliser en ce point, ... ) . Mais je ne sais pas du tout si c'est une bonne solution au niveau de l'implémentation et des performances.

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Merci,

    J'y avais deja pensé, mais je me demande comment je gérerai le cas ou le segment coupe plusieurs astéroïdes ?

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par SofEvans Voir le message
    Merci,

    J'y avais deja pensé, mais je me demande comment je gérerai le cas ou le segment coupe plusieurs astéroïdes ?
    En t'arrêtant au premier

    A moins que le "pouvoir de destruction" des astéroïdes ne soit variable, auquel cas, tu applique les dégâts respectifs de chaque astéroïde jusqu'à les avoir tous passés en revue ou jusqu'à destruction du vaisseau
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Hum, tout cela est encore flou pour moi, je ne vois pas bien comment proceder.

    Est ce que je dois tracer tout les segment puis je les compare ?
    Est ce que je dois faire autrement ?

    Je vais essayer de coder tout cela.

  6. #6
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Hum, tout cela est encore flou pour moi, je ne vois pas bien comment proceder.

    Est ce que je dois tracer tout les segment puis je les compare ?
    Est ce que je dois faire autrement ?

    Je vais essayer de coder tout cela.
    Tu ne peux pas te lancer dans le code tant que tu ne sais pas exactement ce que tu veux/dois faire. C'est le truc à ce casser les dents.

    Tu peux observer ton monde de la façon suivante : aucun évènement ( ie un déplacement ) n'est simultané ; ils se déroulent tous à la suite. Ainsi tu n'as qu'à t'occuper d'un seul déplacement à la fois et donc d'un seul segment à la fois.

    Prends une feuille de papier et dessine toi quelques situations pour mieux comprendre ce que tu cherches à coder.

Discussions similaires

  1. [2.x] Petit conseil sur la gestion des Entity
    Par grinder59 dans le forum Symfony
    Réponses: 4
    Dernier message: 26/03/2014, 10h25
  2. Réponses: 2
    Dernier message: 31/10/2012, 16h48
  3. application windows pour gestion des mouvements d'un stock
    Par Yousraao dans le forum Mon programme
    Réponses: 1
    Dernier message: 16/08/2012, 02h30
  4. [MCD] Gestion des mouvements des climatiseurs
    Par rec82 dans le forum Schéma
    Réponses: 9
    Dernier message: 14/07/2010, 18h54
  5. Conseils sur la gestions des erreurs en Java
    Par Clorish dans le forum Général Java
    Réponses: 8
    Dernier message: 26/03/2008, 16h03

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