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 :

Saut avec paramétrage hauteur et impulsion


Sujet :

XNA/Monogame

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Saut avec paramétrage hauteur et impulsion
    Bonjour à tous!

    Je me suis lancé dans un projet assez ambitieux de conception d'un petit jeu de A à Z (du design à la musique en passant par le code) et je rencontre (assez rapidment, il faut l'avouer ) un premier obstacle.

    C'est sans doute quelque chose d'assez simple à résoudre, mais étant game designer et pas coder, j'avoue m'arracher les cheveux.

    Il s'agit donc d'un jeu 2D type "runner game" où le personnage avance tout seul et où le joueur peut sauter en appuyant sur un bouton (touche espace pour le mapping clavier). Pour l'instant, ce que j'ai fait ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                if (isGrounded && ServiceHelper.Get<KeyBoardService>().IsKeyDown(Keys.Space))
                {
                    speed.Y = -jumpImpulsion;
                }
     
                if (!isGrounded)
                    speed.Y += gravity * deltaFrame;
     
                newPosition = Position + speed * deltaFrame;
    Ca fonctionne pas mal : la gravité finissant par annuler l'impulsion donne un saut en cloche.

    Mais voilà, j'aimerais pour des réglages futurs avoir plus de contrôles, notament sur une variable d'hauteur de saut tout en gardant une variable d'impulsion. En gros pouvoir rapidement donner une vitesse initiale au saut ainsi qu'une hauteur à atteindre et que celui-ci reste "smooth" (en cloche).

    Je me suis battu avec pleins de solutions (notament des modifications de la position en fonction de fonctions sinus, cosinus etc...) mais rien de semble fonctionner donc je viens au-secours sur ce forum...

    Merci d'avance de vos réponses!

  2. #2
    Membre régulier
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    salut, pourquoi ne pas implémenter simplement la formule de lancer de poids ? comme ça tu aura une gravité, une masse, une direction et une force...
    te restera juste à la modifier un peut pour faire en sorte que le gars reste sur le même X

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut, en gros simplement:
    si tu veux être précis alors:
    • le vecteur d'accélération A=P+A0 avec P le poids et A0 l'accélération du à autre chose (propulsion, etc...)
    • le vecteur vitesse V
    • le vecteur D donnant le déplacement pour un incrément de temps t


    tu initialises:
    D.x,D.y,D.z la position de départ
    V.x,V.y,V.z la vitesse initiale
    et pour chaque cycle:
    • tu mets à jour la position:
      • D.x=.5*A0.x*t*t+V.x*t+D.x
      • D.y=.5*A0.y*t*t+V.y*t+D.y
      • D.z=.5*(A0.z-m*g)*t*t+V.z*t+D.y
      PUIS la vitesse:
      • V.x=A0.x*t+V.x
      • V.y=A0.y*t+V.y
      • V.z=(A0.z-m*g)*t+V.z

    avec m la masse...

    si tu ne travailles pas directement en vecteur je te conseille de stocker t*t pour ne le calculer qu'une seule fois...

    en espérant que ça t'éclaire...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

Discussions similaires

  1. Div avec une hauteur automatique ?
    Par tintin72 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 04/02/2008, 18h53
  2. Réponses: 10
    Dernier message: 11/11/2007, 15h56
  3. Réponses: 3
    Dernier message: 01/11/2007, 09h38
  4. Paramètrage hauteur impression sans boîte de dialogue
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 36
    Dernier message: 06/03/2006, 21h23
  5. Saut avec ou sans condition
    Par Frenchghost dans le forum Assembleur
    Réponses: 16
    Dernier message: 03/01/2005, 14h28

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