if (touche gauche) vitesse--; else if (touche droite) vitesse++; vitesse-=deceleration_plateforme_courante; x+=vitesse;Mais sinon pour le post 27, il y a du juste?
Ximoon :
(je conçoit que dans backgammon l'accélération puisse être nulle)
5. Si tout cela est juste, peut-on dire que dans le cas d'un angle de 60°, on transpose sin(60°) (proportion) de la vitesse x sur la vitesse y et on conserve cos(60°) (ou sin(30°)) de la vitesse x sur son axe (x donc)?ne m'a dit si c'était juste) j'ai une limitation du moteur de jeu; je ne gère que la vitesse horizontale. En clair si j'ai: / / /(personne Et que le perso est sur le / du bas et avance vers la droite, il va se retrouver "dans" le / une ligne plus haut et va être replacé de manière à tenir dessus la plate-forme (malgré cela il s'agit bien d'une plate-forme passe-bas) alors il est impossible de gérer soi-même la vitesse verticale puisqu'elle peut être considérée comme infinie (pointant vers le haut) à cause du moteur
Brunni :Euh je n'ai pas du bien suivre ta démonstration...
Si on prend une plate-forme à 60° par exemple, elle est dessinée de manière que pour un pixel en x on a deux pixels en y (en diagonale 45° c'est un pixel en x pour un pixel en y) donc là ça veut forcément dire que la vitesse y est deux fois plus grande que la vitesse x. Et c'est là que ça embête...
Si je prends sin(60°) je vois que je serais censé avoir 86.6% de la vitesse x reportée en y (lorsqu'on est sur un mur vertical, 100% de la vitesse x est reportée sur l'axe y, et à plat 0D'où vient le sin(60°) ?. Donc si j'ai 86.6% en y, j'aurais forcément 43.3% en x (/2). Dans ce cas-là ça fonctionne, mais pour une plate-forme à 30° j'ai sin(30°)=50% (pour vitesse y), et là vitesse x = 2 * vitesse y donc vitesse x = 100%, alors que 100% ce n'est qu'au plat! Bizarre, je fais forcément une faute mais je ne vois pas où...
D'où vient le sin(60°) ?Des 60° d'inclinaison de la plate-forme. Je viens de faire un essai en TI-BASIC et j'en conclus qu'avec une virgule fixe (* et / 10000) l'angle doit être de 63.43° pour un vecteur ayant un coefficient directeur de 2. Mea culpa.
À mon avis, c'est plutôt l'accélération verticale qui sera le double de l'accélération horizontale d'ailleursC'est bien possible. Mais pour ce qu'il s'agit de l'accélération du personnage, elle est constante non? Parce que j'ai essayé pour Sonic et là j'en conclus que de faire un truc du genre:
if (touche_droite) perso->vitesse+=INCREMENT_VITESSE; [...] perso->vitesse-=coeff_ralentissement[perso->angle];ça ne marche pas du tout
2. L'accéléraion n'est pas constante, elle dépend de l'inclinaison de la plate-forme.=coeff_ralentissement[angle];
OK. Mais bon si j'utilise ça:if (touche_droite) vitesse+=ACCELERATION_BASE; [...] vitesse-j'ai de toutes façons une accélération qui est adaptée puisque j'y ajoute par exemple 2 pour ACCELERATION_BASE et y enlève 1.4 pour coeff_ralentissement[angle] j'ai au final une accélération de 0.6 adaptée donc. Et ça c'est faux, mais je ne sais pas pourquoi.