Wally57
Messages postés71Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention12 juillet 2006
-
31 oct. 2005 à 16:01
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 2011
-
1 nov. 2005 à 18:34
Voila mon problème :
Je commence a créé un jeu où le but est de faire des protections pour
un chateau et apres une attaque, qu'il soit toujours debout (en gros) ,
avec une vue du dessus.
J'ai déjà fait le code pour poser des murs et des tours, et la creations de "l'armée".
L'armée est en fait juste des clips qui descendent l'ecran tant qu'ils ne touchent pas de murs ou de tours.
Donc, le code consiste a tester une collision de chaque mechants avec
un mur ou une tour, et si il y a collision, l'énergie du batiement
descend jusqu'a arriver a 0 et etre suprimé.
Donc j'ai fait des boucles pour limiter le nombre de tester au nombre de mechants crées et au nombre de tours et de murs.
Mais lorsqu'il y a beaucoup de murs, de tours et de mechants, ca rame a mort (5 ou 6 fps...) !
Parce que s'il y a 20 murs, 20 tours et 50 mechants, il faut tester
pour chaque mechant si il y a collision avec les 20 murs et avec les 20
tours, meme si certaine d'elles ont étaient détruites...
En plus, autour des tours il y a une zone et faut aussi tester si un mechant est dans la zone pour lui "tirer" dessus...
Je sait pas si c'est tres claire... mais ca l'ai surement plus que le
code, vu qu'il fait 130 lignes et qu'il est assez bordelique !
Alors j'aimerai savoir s'il existe une methode pour tester la collision
que avec les tours, murs et mechants qui ne sont pas encore détruits.
Wally57
A voir également:
Tester si un objet existe avant de faire un hitTest
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 1 nov. 2005 à 18:34
Ben en fait, ma méthode est meilleure (disons qu'elle est meilleure car
je faisais comme toi avant et que j'ai lu dans un bouquin celle que je
t'ai donné...et quand on voit le fonctionnement, on se dit: "mais
pourtant j'y ai pas pensé!")
Donc en fait "conteneurTours" serait un clip où tu mettrais toutes tes
tours, comme ça pour tous les ennemis, tu testes d'abord s'il y a
collision avec le conteneur (au lieu de faire le test sur toutes les
tours...si y'a pas collision, ça te fait un paquet de tests en
moins...multiplié par le nombre d'ennemis...et rebelotte pour les
murs...) et ensuite si le test est positif, tu fais le test sur tous
les éléments de "conteneurTours" donc chaque "Tour" et pareil...faut
sortir de la boucle "for(elt ..." dès que t'as un test positif!
Histoire d'accélérer encore un peu les tests!
Voilà...idem pour les murs que je mettrais dans un "conteneurMurs". En espérant que ça se clarifie pour toi!
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 1 nov. 2005 à 13:17
quand ils sont détruits, tu fais un removeMovieClip...enfin j'espère! lol
Ensuite pour parcourir les clips, tu fais un:
for(elt in conteneurTours){
trace(conteneurTours[elt]._name);
// Faire le test hitTest
}
@+! Samy
PS: pour limiter les tests, tu peux faire un hitTest sur
"conteneurTours", s'il est positif, tu fais un hitTest sur les éléments
de conteneurTours...ça limite pas mal les tests!!