1. Vitesse fixe
1.1 Vitesse fixe pour une variable/1D
courante | la valeur courante |
cible | la valeur cible |
vitesse | la vitesse du changement |
float distance = abs(cible - courante);
if ( courante < cible ) {
courante = courante + min(distance,vitesse);
} else {
courante = courante - min(distance,vitesse);
}
1.2 Vitesse fixe 2D
x | la position horizontale courante |
y | la position verticale courante |
xCible | la position horizontale cible |
yCible | la position verticale cible |
vitesse | la vitesse du changement |
float radians = atan2( yCible-y , xCible-x );
float distance = dist( xCible , yCible , x , y );
x = cos(radians) * min( vitesse , distance ) + x;
y = sin(radians) * min( vitesse , distance ) + y;
1.3 Inverser la direction
vitesse = vitesse * -1;
2. Vitesse proportionnelle
2.1 Vitesse proportionnelle pour une variable/1D
courante | la valeur courante |
cible | la valeur cible |
facteur | le facteur d'assouplissement (float entre 0 et 1) |
courante = (cible - courante) * facteur + courante;
2.2 Vitesse proportionnelle 2D
x | la position horizontale courante |
y | la position verticale courante |
xCible | la position horizontale cible |
yCible | la position verticale cible |
facteur | le facteur d'assouplissement (float entre 0 et 1) |
x = (xCible - x) * facteur + x;
y = (yCible - y) * facteur + y;
3. Vitesse élastique
3.1 Vitesse élastique pour une variable/1D
courante | la valeur courante |
cible | la valeur cible |
vitesse | la vitesse accumulée |
k | premier paramètre de l'élasticité (entre 0 et 1) |
d | deuxième paramètre de l'élasticité (entre 0 et 1) |
vitesse = d * (vitesse + k * (cible - courante));
courante = courante + vitesse;
3.2 Vitesse élastique 2D
x | la position horizontale courante |
y | la position verticale courante |
xCible | la position horizontale cible |
yCible | la position verticale cible |
xVitesse | la vitesse accumulée |
yVitesse | la vitesse accumulée |
k | premier paramètre de l'élasticité (entre 0 et 1) |
d | deuxième paramètre de l'élasticité (entre 0 et 1) |
xVitesse = d * (xVitesse + k * (xCible - x));
x = x + xVitesse;
yVitesse = d * (yVitesse + k * (yCible - y));
y = y + yVitesse;
4. Déplacement circulaire
radians = radians + vitesse;
x = cos(radians) * rayon + centreX;
y = sin(radians) * rayon + centreY;