Hum, tu devrais mettre des noms de variables plus claire, drag, par exemple, je sais pas du tout se que ca signifie.
Mais pour faire sauter t´embete pas avec la gravité.
Moi pour gerer mes sauts, j´ai prit la hauteur du debut, je diminue balle.y, si il est arrivé a hauteurAvantSaut - hauteurDunSaut, alors il redescend jusque a la hauteurAvantSaut.
if(saut==1) HAS(hauteur avant saut) = balle.y, saut++;
if(saut==2 && perso_y>HAS-10)perso_y-=2;
if(saut==2 && perso_y==HAS)saut=3;
if(saut==3 && perso_y>HAS-20)perso_y-=1;
if(saut==3 && perso_y==550)saut=4;
if(saut==4 && perso_y<HAS-10)perso_y+=1;
if(saut==4 && perso_y==HAS)saut=5;
if(saut==5 && perso_y<HAS-5)perso_y+=2;
if(saut==5 && perso_y==HAS)saut=0;
Le probleme ici c´est que la vitesse c´est toi qui la definit, et non croissante/decroissante.