Je cherche une solution efficace pour gérer une accélération(et une décélération par la même occasion)lorsque l'on déplace le sprite , de façon à ce qu'il n'atteigne pas sa vitesse maximal immédiatement.
Donc en gros j'aurai grossièrement un truc du genre :
void acceleration()
{
if(tempsEcoule <= dureeAcceleration)
{
/*je ne sais pas quoi écrire ici de façon à ce que la vitesse augmente
proportionnellement à la durée d'accélération , quelque soit la vitesse maximum possible*/
}
}
j'ai donc une variable vitesseActuelle et vitesseMax , mais je n'ai pas encore trouvé de solution puissante.
Je te passe les détails, tu calcules ton nouveau vecteur vitesse et ta nouvelle position ainsi :
V = F*t + V0
P = F*t²/2 + V0t + P0
Avec F force appliquée (vecteur que tu mettras a l'horizontal, dans le sens ou tu veux pousser ton gars)
t temps passé depuis la derniere frame (en secondes)
V0 vitesse du mec a la frame précédente (tu dis que tu le stockes)
P0 position du mec a la frame précédente
V,P : nouvelle vitesse et nouvelle position.
Avec ceci, au fur et a mesure du temps, ton gars va accélérer. Tu peux plafonner par la vitesse limite si tu le souhaite, ou faire intervenir un frottement au sol (directement proportionnel au vecteur vitesse), ce qui reviendra a peu pres au meme (je ne connais pas ton niveau en physique)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html