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 :

Problème de plateforme pour un jeu de plateforme


Sujet :

SDL

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Par défaut Problème de plateforme pour un jeu de plateforme
    Bonjour à tous,

    voilà, j'ai un petit soucis de "conception". Je voudrais créer une plateforme sur laquelle on peut sauter. Au départ je pensais faire une boite de collision avec mon perso, mais voilà j'ai vite compris et vu que c'était pas la bonne méthode du tout.
    Car je peux sauter dessus, mais une fois dessus mon bonhomme refuse de se déplacer a droite ou gauche vu qu'il est en "collision".

    Pourriez-vous m'orienter vers une logique de conception pour y arriver ?
    faut-il faire un autre type de collision ? suis-je complètement à coté de la plaque ?

    Toutes vos idées sont les bienvenues, je sèche honteusement depuis plusieurs jours....

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    tu ne pourras pas gérer tous les déplacements avec une simple variable collision. tu doit trouver un moyen de savoir de quel coté a lieu la collision.
    pour cela le plus simple est peut être d'avoir plusieurs booléen, collision_haut collision_bas collision_droite ect... quand tu test si il y a collision, tu test aussi la position du personnage par rapport au sol pour définir ou est la collision.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 224
    Billets dans le blog
    166
    Par défaut
    C'est une possibilité.

    Mais par rapport à ce problème il y a plusieurs solutions. Certaines des solutions sont des hacks, d'autre sont plus propres.
    Actuellement je n'ai pas trop de solution :s, un hack aurait été que à chaque fois qu'il y a collision, le perso ne soit pas figé, mais placer à un pixel en arrière ( soit on le fait sortir du stade de la collision ).
    Sinon, l'utilisation de vecteur vitesse , que l'on mettra à zero si une collision existe ( un vecteur vitesse, en 2D, c'est juste un x , et un y ) , si collision en bas, le y = 0.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Si c'est juste une plateforme rectangulaire, alors elle ne peut bloquer qu'un côté . Donc comme l'a dit bebaijhi tu peux savoir de quelle côté la collision est (en comparant le haut de la plateforme avec le centre du perso) et placer la plateforme en "collision haut" (ou "collision bas" pour le personnage). Comme ça ton perso ne peux pas aller vers le bas. Et à chaque "tournée", tu vérifies si il y a de nouvelles collisions/l'état de la collision a changé, etc.

    Je ne sais pas du tout quel est ton niveau, donc je sais pas si tu connais les listes chaînées (car je sais pas où tu as appris le C/C++), mais si tu les connais pas je crois qu'à ce stade (jeu vidéo 2D real time) tu ferais bien de les apprendre.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Par défaut
    je ne sais pas si ca pourra t'aider, ni meme si ca corresponds a tes besoin, mais voilà comment je fait.
    je ne gere pas de variable "collision" a proprement parlé.
    mais parcontre j'ai un bool qui s'appelle "sur_plateforme", quand je tombe sur une plateforme, alors je commence par fixer cette var a true (pour arreter de tomber) et aussi j'utilise une variable "porte_joueur" donnée membre de mon obj plateforme, ainsi si je veux je peux bouger ma plateforme, et comme celle-ci sait qu'elle porte le joueur, elle peu commander le depl du joueur ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    plateforme::depl()
    {
     // effectue les calc de depl... dx et dy
     //....
     x+=dx;
     y+=dy;
     if(porte_joueur) joueur->depl_externe(dx,dy); // fastoche ;)
    }
    bon et ensuite pour le joueur en lui même c'est assez facile...
    en gros, hein :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    joueur::depl()
    {
    // determine les delta x et y en fonction des touches (horiz et saut) : dx et dy
    if(solid(x,y) || sur_plateform)
    { // ne tombe pas...
      // ...
    }
    else
    { // calcul de la chute
      //...
    }
     
    x+=dx;
    y+=dy;
    }
    en tres gros hein
    edit :
    a oui j'ai failli oublier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    joueur::depl_externe(dx,dy)
    {
    // quelques tests (on se cogne la tête etc..)
    // ...
    x+=dx;
    y+=dy;
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/07/2014, 16h50
  2. problème de typage pour un jeu d'échec
    Par chlab dans le forum Caml
    Réponses: 2
    Dernier message: 02/08/2009, 11h11
  3. Delphi appliqué pour un jeu de plateforme
    Par Tsukaasa dans le forum Delphi
    Réponses: 2
    Dernier message: 30/01/2007, 23h00
  4. Problème d'accelération pour un jeu
    Par jbidou88 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 08/05/2006, 11h16
  5. [Wamp] Cherche plateforme pour développer en php, mysql, xml, xsl
    Par ibtisss dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 18/10/2005, 18h31

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