Bonjour, j'ais un gros souci avec une boucle for, je suis en train de faire un petit jeu de plate-forme.
Jusqu'à la aucun problèmes j'ais réussi à faire bouger mon personnage, à le faire sauter, chuter, bouger horizontalement le décor .etc. Ensuite j'ais mis une ennemis, tout marche bien il se tourne en fonction de ma position, il me frape quand j'approche. Le problème c est que si je veut mettre un deuxième même ennemis il faut tout réécrire les fonction, les hitTest, donc je me suis tourné vers le boucle for. Et là, problème : j'ais trois ennemis appelé « yamato1 » « yamato2 » « yamato3 » ,j' donc fais une boucle for pour que mes trois vilain ennemis se tourne, me frappe. Malheureusement et comme pour beaucoup d'autre personne apparemment seul le « yamato3 » fonctionne correctement .
Voilà à quoi sa ressemble.
J'ais un clip pour le personnage principale, un clip pour le décor infranchissable, un autre pour le décor franchissable cette fois, un pour l'arrière plan, un pour ma barre de vie, et un dernier pour les ennemis.
J'ais en tout trois frames.
Première frame :
vitesse_hidan= 3;
direction_hidan= 2;
action_hidan= 0;
vitesse_saut= 10;
gravité = 3;
chute = true;
saut = false;
yamato_vie= true;
direction_yamato= 1;
for(i=1;i<4;i++){
ennemis=_root["yamato"+i];
}
function déclalage_décor(){
if (chute==true){
décor_infranchissable._y -= gravité;
décor_franchissable._y -= gravité;
arrière_plan._y -= gravité/4;
ennemis._y -= gravité;
}else{
}
}
onEnterFrame = function(){
déclalage_décor();
}
Deuxième frame :
//Hidan
action_hidan = 0;
chute = true
if (Key.isDown(Key.UP)) {
if(saut==false){
ennemis._y+=(vitesse_saut+5);
décor_franchissable._y+=(vitesse_saut+5);
décor_infranchissable._y+=(vitesse_saut+5);
arrière_plan._y+=(vitesse_saut+5)/4;
vitesse_saut-=gravité/3.5;
}
if (direction_hidan == 2) {
direction_hidan = 1;
action_hidan = 0;
}
if (direction_hidan == 4) {
direction_hidan = 3;
action_hidan = 0;
}
}
if (Key.isDown(Key.RIGHT)) {
ennemis._x -= vitesse_hidan;
décor_infranchissable._x -= vitesse_hidan;
décor_franchissable._x -= vitesse_hidan;
arrière_plan._x -= vitesse_hidan/4;
direction_hidan = 2;
action_hidan = 1;
} else {
if (Key.isDown(Key.LEFT)) {
ennemis._x += vitesse_hidan;
décor_infranchissable._x += vitesse_hidan;
décor_franchissable._x += vitesse_hidan;
arrière_plan._x += vitesse_hidan/4;
direction_hidan = 4;
action_hidan = 1;
}else{
if (Key.isDown(Key.SPACE)) {
action_hidan = 2;
}
}
}
if(décor_infranchissable.hitTest(hidan._x,hidan._y+20, true)){
chute = false;
}
if(décor_infranchissable.hitTest(hidan._x,hidan._y+15, true)){
chute = false;
décor_infranchissable._y+=vitesse_saut/3;
ennemis._y+=vitesse_saut/3;
décor_franchissable._y+=vitesse_saut/3;
arrière_plan._y+=(vitesse_saut/3)/4;
}
if(décor_infranchissable.hitTest(hidan._x,hidan._y-20, true)){
vitesse_saut=0;
}
if(décor_infranchissable.hitTest(hidan._x+9,hidan._y, true)){
décor_infranchissable._x+=3;
ennemis._x+=3;
décor_franchissable._x+=3;
arrière_plan._x+=0.75;
}
if(décor_infranchissable.hitTest(hidan._x-9,hidan._y, true)){
décor_infranchissable._x-=3;
ennemis._x-=3;
décor_franchissable._x-=3;
arrière_plan._x-=0.75;
}
if (vitesse_saut<=0){
saut = true;
vitesse_saut=10;
}
if(saut==true && chute==false){
saut=false;
}
hidan.gotoAndStop(direction_hidan+action_hidan*4);
//Yamato
action_yamato=0;
if(hidan._x<ennemis._x){
direction_yamato=1;
action_yamato=0;
}
if(hidan._x>ennemis._x){
direction_yamato=2;
action_yamato=0;
}
if(ennemis.hitTest(hidan) && action_hidan == 2){
yamato_vie=false
}
if(ennemis.hitTest(hidan)){
action_yamato=2;
_root.barreVie.nextFrame();
}
if(yamato_vie==false){
direction_yamato=6
}
ennemis.gotoAndStop(direction_yamato+action_yamato);
Troisième frame
gotoandplay(6);
Après plusieurs recherches j'ais trouvé qui l fallait "cibler" mon clip avec des .id =i ou des .indice = i
Mais sans succès j'ais aussi essayé des créer un tableau mais sa marche pas non. J'ais aussi essayé de mettre :trace (« yamato »+i), dans la fenêtre dont je ne connais pas le nom s'affiche :yamato1, yamato2, yamato3 en boucle mais seul le dernier ennemis fonction. Donc si quelqu'un pouvais m'aider à régler ce problème qui dure depuis bien longtemps.