vue Le déplacement aléatoire
Kommunauty
Connexion
Inscription

Le déplacement aléatoire

le 1 septembre 2011 • Flash • par Dawlin

Bonjour à tous, dans ce tutoriel on va voir comment on peut donner à un objet un effet de déplacement continu aléatoire.

Voici tout de suite un petit exemple ici :

Bon. j'en avais fait un autre beaucoup mieux avec un poisson qui se déplacait et qu'on pouvait nourrir et tout, mais ça ça sera pour la fin

Voici le code entier, commenté, parce qu'à la base ce code ne visait pas un tutoriel, donc il est maintenant fini, et je ne peux que vous le donner tel quel, par contre je l'ai bien commenté presque ligne par ligne  :


//On charge une bibliothèque qui va être utile
import mx.utils.Delegate

//On déclare une fonction qui permet de générer un nombre aléatoirement entre min et max
function randRange(min:Number, max:Number):Number {
     var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
     return randomNum;
}
// ########### Constantes :
//rrot et rarot sont la plage dans laquelle la tête peut tourner
rrot = 10;
rarot = 0-rrot;
vitesse = 3;
//MAXIMUMS positions :
larg = 390;
long = 290;

//Timerisation
/*
On va s'en servir pour définir quand est-ce qu'on tourne, quand est-ce qu'on avance, etc....
*/
timer =0;
freq = 20;
coef = 1.5;
onEnterFrame = function(){
//50fois par secondes on execute le script de deplacement aléatoire
bouge(smbl);
}
//Tout est regroupé dans une fonction, c'est très pratiqur pour l'utiliser ailleurs :)
bouge = function(vocc){
//On définit quel clip va bouger
var clp:MovieClip = vocc;

clp.onEnterFrame = function(){
//On note ses positions initiales
ax = clp._x;
ay = clp._y;
timer++;
//Toutes les freq*coef images,on revient à 0
if(timer>freq*coef){
timer=0;
//De temps en temps, on fait tourner le clip
}else if (timer>freq){
clp._rotation+=r;
}else{
//De temps en temps on recalcule un nouvel angle de rotation
r = randRange(rarot,rrot);
}
//On le fait avancer en permanence VERS L'AVANT
clp._y -= vitesse*Math.cos(clp._rotation*Math.PI/180);
clp._x += vitesse*Math.sin(clp._rotation*Math.PI/180);

//###########Detection de collision avec les barres qui limitent l'animation
if(clp.smbl2.hitTest(b1)){
clp._y = long;
}
if(clp.smbl2.hitTest(b2)){
clp._y = 0;
}
if(clp.smbl2.hitTest(b3)){
clp._x = larg;
}
if(clp.smbl2.hitTest(b4)){
clp._x = 10;
}
//Si il y a collision on le remet au bon endroit :)
}
}

Pour que ça marche il vous faut des barres pour limiter l'animation, qui ont pour occurrence en partant du haut et dans le sens des aiguilles d'une montre : b1 b4 b2 b3

Et voilà, c'est fini Alors vous allez me dire "ouais tranquille vite fait le tutoriel" mais en fait ce qui compte c'est surtout ce qu'on peut faire avec ! Regardez : une petite intelligence artificielle qui détecte des présences et voilà :

(cliquez n'importe où pour nourrir le poisson, il ira manger quand il détectera la présence) :

Et voilà, merci d'avoir suivi ce tutoriel,

Dawlin

  
Aucun commentaire

Sois le premier à débuter une discussion à propos de cet article !



Ajoute un commentaire !

Ajouter une image... Trouvée sur internet » De mon PC »
Adresse URL :
Adresse de la page de la vidéo :
Taille du texte :
Couleur du texte :

Article lu 8078 fois.