
int x=123,y=32; int yd=0; while (!exit_game) { if (key.jump && can_jump()) yd=8; y+=yd--; while (under_ground(y)) y++,yd=0; ... afficher, modifier la position en x ... }
int jump_table[8]={1,3,4,3,1,-4,-10,-20}; int x=123,y0=32; int jump_idx=-1; while (!exit_game) { if (key.jump && can_jump()) jump_idx=0; y=jump_idx<0 ? y0 : y0+jump_table[jump_idx]; while (under_ground(y)) y++,jump_idx=-1; if (jump_idx<0) y0=y; else if (++jump_idx>=8) jump_idx--; ... afficher, modifier la position en x ... }
geogeoHeu... la vitesse de chute ne dépend pas de la masse hein....
: Faut ce mettre d'accord, car là vous me parlez d'un jeu de plateforme avec gestion des masses
, frottements....Pas tellement, on s'en fout un peu des frottements, ça peut s'implémenter d'une manière relativement triviale (limiter les vitesses verticales et horizontales
moi je parle pas du tout de ça, mais bon. Bien sûr que les tables sont meilleurs dans tel ou tel cas et les formules dans d'autres cas.Ben non, même sans prendre en considération les frottements, les tables s'avèrent fausses comme on te l'a expliqué plus haut (l'accélération ay=g, quelle que soit la valeur de g, et déformer les valeurs de la table modifie la valeur de g utilisée, de façon qu'un saut haut prendra le même temps qu'un petit saut, ce qui ne colle pas du tout et est loin d'être précis, surtout considérant les calculs beaucoup plus compliqués à mettre en oeuvre)
Mais franchement pour un simple mario ou un Kirby, voir un FlashBack, les tables précalculées sont vraiment la meilleur solution.Heu... Mario, je sais pas, peut-être le premier (et encore je doute) parce qu'il est très ancien, Flashback peut-être, mais là encore je doute, et Kirby, même pas la peinde d'y penser. Pense aux sauts pour lesquels tu pars du bas pour atterrir sur une platteforme plus haute ou l'inverse, les tables se révèlent inutilisables. Et les chutes, ça fonctionne pareil que les sauts (en réalité c'est l'inverse, mais bon...
int x=123,y=32; int yd=0; while (!exit_game) { if (key.jump && can_jump()) yd=8; y+=yd--; while (under_ground(y)) y++,yd=0; ... afficher, modifier la position en x ... }
int jump_table[8]={1,3,4,3,1,-4,-10,-20}; int x=123,y0=32; int jump_idx=-1; while (!exit_game) { if (key.jump && can_jump()) jump_idx=0; if (jump_idx<0 && !under_ground(y0-1)) jump_idx=2, y0-=jump_table[jump_idx]; int y=jump_idx<0 ? y0 : y0+jump_table[jump_idx]; while (under_ground(y)) y++,jump_idx=-1; if (jump_idx<0) y0=y; else if (++jump_idx>=8) jump_idx--; ... afficher, modifier la position en x ... }
GoldenCrystal :
Au fait, voilà un exemple de l'algo sans table que j'avais codé l'autre jour (just for fun), si ça vous intéresse: http://goldencrystal.free.fr/JumpDemo.zip
MoumouJe ne comprends pas
:Sasume
: (c'est impossible physiquement[...])
On va finir par le savoir
geogeo :Fais voir ?
Je te rassure pour mon jeu, j'utilise deux lignes pour faire mes sauts.
Euh quand à la précision des table et j'en passe, je doute que vous voyez ça à l'oeil.La première chose qu'on ma reproché dans punkoe était que les sauts ne sont pas naturels, c'est aussi une des premières chose que l'on a fait remarquer à mastergb pour kirby.
D'ailleurs les tables on permit une grande évolution technique dans les jeux.Lesquelles ?
suffit de savoir les maitriser.Comment ?
geogeo
: D'ailleurs les tables on permit une grande évolution technique dans les jeux., suffit de savoir les maitriser.
Sasume
: Ben le fait d'utiliser des tables peut simplifier la gestion des collisions tout de même...