Tutoriels - Flash - Maths Physique fichier source



Propriétés Physiques Les frottements (écrit par Jérémie )

2nde partie du tutoriel sur les propriétés physiques, on va ajouter des propritétés de rebonds & de frottements





prérequis

connaître bien le drag'n drop avancé, et la première partie du tutoriel


étape 1- rebonds

les propriétés de rebonds vont s'ajouter au calcul de la trajectoire de la balle, et s'effectuera lors d'un contact avec un rebord.
c'est donc dans la partie des contraintes (encore une fois, voir le tutoriel sur la gravite )qu'il faudra ajouter les nouvelles lignes de code.

tout d'abord, on ajoute une propriété rebond lorsque la balle est chargé, modifiez donc le code comme suit :

onClipEvent (load) {
gravite = 10;
rayon = this._width/2;
rebond = 0.6;
}


à chaque rebond, la vitesse de la balle sera amortie. si elle tape sur les bords droit ou gauche, sa vitesse en y est simplement amortie, (*rebond) celle en x est amortie puis inversée (la balle part dans l'autre direction). si elle tape sur un bord haut ou bas, la vitesse y est inversée et amortie, celle de x simplement amortie. (si vous ne comprenez pas réfléchissez ou demandez moi)

dans la partie des contraintes (tous les if ) :
if (y<rayon) {
y = rayon;
vitessey *= -rebond;
vitessex *= rebond;
}
if (y>_root.hauteur-rayon) {
y = _root.hauteur-rayon;
vitessey *= -rebond;
vitessex *= rebond;
}
if (x<rayon) {
x = rayon;
vitessey *= rebond;
vitessex *= -rebond;
}
if (x>(_root.longueur-rayon)) {
x = _root.longueur - rayon;
vitessey *= rebond;
vitessex *= -rebond;
}

avec des opérations très simples & la prise en compte d'une nouvelle variable, on obtient déjà un résultat assez réaliste.



étape 2 - frottements

bien que dans le cas de notre animation, l'amortissement puisse paraître suffisant au réalisme, nous allons voir comment ajouter une nouvelle variable frottement.
celle ci, comme le rebond, sera prise en compte lors du calcul des coordonnées mais ne s'appliquera, cette fois, plus pendant le contact avec les bords, mais en continu.

comme précedement, ajoutez une variable frottement :

onClipEvent (load) {
gravite = 10;
rayon = this._width/2;
rebond = 0.6;
frottements = 0.9;
}


les frottements s'opposeront en continu aux vitesses (x et y), c'est donc au calcul de celles ci que nous feron intervenir la nouvelle variable. remplacez tout simplement :

vitessex = (x-oldx)*10;
vitessey = (y-oldy)*10;


par:

vitessex = (x-oldx)*10*frottements;
vitessey = (y-oldy)*10*frottements;


par la suite, vous pourrez vous même ajouter toutes sortes de variables à prendre en comptes, comme le vent, ou le poids. le principe restera le même.





Tous droits réservés 2003 Jérémie Cook