Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    janvier 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : janvier 2012
    Messages : 2
    Points : 0
    Points
    0

    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 :
    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
    Nouveau Membre du Club
    Homme Profil pro
    médical
    Inscrit en
    septembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : septembre 2007
    Messages : 132
    Points : 39
    Points
    39

    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
    Expert Confirmé Avatar de ericd69
    Homme Profil pro Eric Dureuil
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 897
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Dureuil
    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 897
    Points : 3 207
    Points
    3 207

    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...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •