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!