Création d'un mouvement élastique

Description

Bonjour.

Alors voila il voulait savoir comment faire un mouvement élastique pour son futur jeu voila donc une des façon de le faire:

1.]Tout d'abord créez un cercle rempli qui vous servira de balle, convertissez la en Clip, nommez la ball_mc et donnez lui comme nom d'occurence ball_mc.
------
2.Une fois la balle créee il faut initialiser vos variables:

ball_mc.friction = .9;
ball_mc.ratio = .3; //taux d'élasticité
ball_mc.speedX = 0; //vitesse X
ball_mc.speedY = 0; //vitesse Y
ball_mc.baseX = ball_mc._x; //base X de la balle
ball_mc.baseY = ball_mc._y; //base Y de la balle
------
3.A présent que vous avez défini les variables, vous devez configurer le clip de manière à ce que l'on puise le faire glisser:

ball_mc.onPress = function ()
{
this.startDrag ();
};
------
Maintenant, vous devez ajouter le code qui vous permet de laisser le clip se déplacer librement:

ball_mc.onRelease = function ()
{
this.stopDrag ();
};

------
Vous allez avoir besoind'ajouter du code supplémentaire à cette méthode onRelease.
Après l'action stopDrag, ajoutez la déclaration d'une fonction onEnterFrame:

this.onEnterFrame = function (){

}

------
A présent, dans la méthode onEnterFrame, ajouter ce code pour gérer le calcul de la vitesse de la balle:

this.speedX = (this.speedX * this.friction) + (this.baseX - this._x) * this.ratio;
this.speedY = (this.speedY * this.friction) + (this.baseY - this._y) * this.ratio;

------
Il vous suffit a présent d'utiliser vos nouvelles valeurs de vitesse pour définir la position X et Y de la balle.
Ajoutez ce code après l'équation de speedY:
[code]
this._x += this.speedX;
this._y += this.speedY;
------
<p align=center>Powered by WebixDesign</p>

Source / Exemple :


Le code ActionScript entier pour le mouvement élastique est:

ball_mc.friction = .9;
ball_mc.ratio = .3; //taux d'élasticité
ball_mc.speedX = 0; //vitesse X
ball_mc.speedY = 0; //vitesse Y
ball_mc.baseX = ball_mc._x; //base X de la balle
ball_mc.baseY = ball_mc._y; //base Y de la balle
ball_mc.onPress = function ()
{
	this.startDrag ();
};
ball_mc.onRelease = function ()
{
	this.stopDrag ();
	this.onEnterFrame = function ()
	{
		this.speedX = (this.speedX * this.friction) + (this.baseX - this._x) * this.ratio;
		this.speedY = (this.speedY * this.friction) + (this.baseY - this._y) * this.ratio;
		this._x += this.speedX;
		this._y += this.speedY;
	};
};

Conclusion :


On aurait pu utiliser les easing equations de Mx2004.
Mais ce sera un autres tuto...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.