salut,
Le cas des sauts est quasiment résolu. Il y a juste les grands sauts qui ne sont pas encore terribles. comme j'ai pu lire sur le post, il est question que la vitesse y augmente plus vite que les x. je comprends miantenant de quoi il s'agit.
Effectivement, dans le cas de tokitori, le x bouge moins vite que le y puisque le x maxi est d'une tile. Ou plutôt, x et y doivent être proportionnels, et c'est là que c'est dur.
N'arrivant pas à joindre l'éditeur pour avoir l'info, pour le cas de ce jeu, je pense qu'on a affaire à des sauts triangulaires car les déplacements sont réguliers, je veux dire par là que si on a affaire à un calcul parabolique, si mes souvenirs son bons, les y augmentent vite puis arrivé vers le points où le x s'annulle (je ne me souviens plus) les y ralentissent. Hors, dans le jeu, arrivé au point supérieur, le y va toujours à la même vitesse, en monté comme en déscente. Mais je dis peut-être des bêtises... Pour le moment, le code (un peut beaucoup merdique) donne ceci:
switch (toki->sprite.direction)
{
case DIRECTION_RIGHT:
switch (toki->jumpHeight)
{
case LOW_JUMP:
if (toki->sprite.location.x-toki->startJump.x < TILE_WIDTH/2)
toki->sprite.location.y-=toki->speed;
else
toki->sprite.location.y+=toki->speed;
toki->sprite.location.x+=2*toki->speed;
if (toki->sprite.location.x-toki->startJump.x > TILE_WIDTH)
toki->sprite.location.x-=2*toki->speed;
toki->jumping-=toki->speed;
break;
case MEDIUM_JUMP:
// toki do not move left or right during medium jump
if (toki->startJump.y-toki->sprite.location.y < (toki->jumpHeight)/2)
toki->sprite.location.y-=2*toki->speed;
else
toki->sprite.location.y+=2*toki->speed;
toki->jumping-=4*toki->speed;
break;
case HIGH_JUMP:
if (toki->startJump.y-toki->sprite.location.y < (toki->jumpHeight)/2)
toki->sprite.location.y-=2*toki->speed;
else
toki->sprite.location.y+=2*toki->speed;
toki->sprite.location.x+=2*toki->speed;
if (toki->sprite.location.x-toki->startJump.x > TILE_WIDTH)
toki->sprite.location.x-=2*toki->speed;
toki->jumping-=4*toki->speed;
break;
}
break;
puis code similaire pour la gauche et les sauts frontaux/arrières.
le code est merdique, j'en conviens, mais il reproduit quasiment à l'identique ce qui se passe sur gb.