Fonction hittest avec gestion de la transparence.

Fonction hittest avec gestion de la transparence. - Flash/ActionScript - Programmation

Marsh Posté le 19-12-2005 à 21:58:44    

Bonsoir tout le monde. Voila, je vous explique mon pb. je suis en train de programmer un jeu de type astéroïdes. Je gere donc mes collisions entre les missiles et les météorites avec la fonction hitTest. J'ai bien compris qu'en faisant le test entre les 2 clips, je ne peut pas gérer la transparence. J'ai donc décider de gérer mes colisions avec des coordonnées. Je trouve cela moyen, mais j'ai pas trop le choix.
 
Voici ma question : Puis-je gérer une seule fonction hitTest pour tester la colision avec plusieurs points, ou dois-je faire une fonction hitTest par points?
 
Sinon, quelqu'un ne voit d'autres solution pour gérer mes colision avec la transparence?
 
Merci et bonne soirée à tous.

Reply

Marsh Posté le 19-12-2005 à 21:58:44   

Reply

Marsh Posté le 19-12-2005 à 23:55:12    


Mmmmh tes clips sont/contiennent des images importées avec transparence ( gif ou png ) ?
( et donc du coup, le clip est considéré comme rectangle )

Reply

Marsh Posté le 20-12-2005 à 00:27:47    

J'utilise effectivement des png dessiner sous fireworks avec des transparences. Et des queje les converties en clips, j'obtiens des rectangles.

Reply

Marsh Posté le 20-12-2005 à 00:32:48    

Mmmmh quel Flash ? ...  
Si c'est le 8, il y a une issue possible ... sinon, c'est pas gagné ! ;)

Reply

Marsh Posté le 20-12-2005 à 02:19:52    

Désolé pour le retard.
Je travaille sous flash 8. J'éspère que ta solution est intéressante car je l'attends avec impatience.

Reply

Marsh Posté le 20-12-2005 à 03:41:15    

'tain non chuis con, faut pas nécessairement Flash8 ! :D
 
Bon, j'imagine que tu as créé des MovieClips dans lesquels tu as "tiré" tes bitmaps ?
Tu cliques sur la bitmap, tu fais 'ctrl-B' ( = break apart ).
En suite, tu choisis l'outil "Lasso" ( L ) et dans ses propriétés, tu tapes la tolérance ( threshold ) à 0 et le mode d'adouci en "Pixels".
Tu cliques alors sur la zone de la bitmap qui est sensée être transparente puis "delete" ...
 
Je viens de tester, ça le fait bien; il ne te reste plus que les pixels "actifs" de la bitmap d'origine ...
 
Le seul truc, c'est que le hitTest DOIT être de la forme "complète", c-à-d:
clip.hitTest(x,y,true);
où clip est l'objet principal et (x,y) = la position, par exemple, du missile ..
 
Si tu veux voir ce que ça donne:
http://www.rylax.be/temp/hitTest.html
http://www.rylax.be/temp/hitTest.fla
 
Tiens-moi au courant ...
 
Edit: bon il y aurait peut-être moyen de faire plus "propre" avec le nouvel objet BitmapData de Flash 8 ... mais bon ... si cette méthode te convient ....

Message cité 1 fois
Message édité par Mr Mala le 20-12-2005 à 03:44:27
Reply

Marsh Posté le 20-12-2005 à 12:07:55    

dsl, mais je crois que l'on c mal compris. Je n'ai pas de pb concernant les transparence. Le soucis ce fait au niveau du HitTest. Cela m'emebete bcp de faire le test avec un seul point. Je recherchait sois une méthode pour ne plus passer par les coordonnées, ou dans le pire des cas, faire une fonction hitTest mais avec plusieurs points.
dsl de ne pas avoir été très clair. Par contre, elle est sympa ta méthode, je pense que je l'utiliserais.


Message édité par jcdc le 20-12-2005 à 12:09:50
Reply

Marsh Posté le 21-12-2005 à 18:09:09    

Personne ne pourrais m'expliquer comment utiliser le hitTest avec plusieurs coordonnées?

Reply

Marsh Posté le 21-12-2005 à 18:45:40    

pas sue de comprendre quel est le PB mais quand je veux tester une collision autrment que sur les contours d'un mc, j'inclue des  petits sousclip et je fait une une boucle pour tester les collisions avec ces sous clips...
 
je sais pas si ca peut aider...


---------------
D3
Reply

Marsh Posté le 21-12-2005 à 21:19:40    

Y a aussi cette solution, c'est vrai que j'y avais pas penser. Mais je rechercher le moyen de mettre plusieurs points pour eviter de multiplier les hitTest. Mais merci pour l'astuce, je pense que c ce que je vais faire
 
Encore merci.

Reply

Marsh Posté le 21-12-2005 à 21:19:40   

Reply

Marsh Posté le 21-03-2006 à 12:31:54    

Mr Mala a écrit :

'tain non chuis con, faut pas nécessairement Flash8 ! :D
 
Bon, j'imagine que tu as créé des MovieClips dans lesquels tu as "tiré" tes bitmaps ?
Tu cliques sur la bitmap, tu fais 'ctrl-B' ( = break apart ).
En suite, tu choisis l'outil "Lasso" ( L ) et dans ses propriétés, tu tapes la tolérance ( threshold ) à 0 et le mode d'adouci en "Pixels".
Tu cliques alors sur la zone de la bitmap qui est sensée être transparente puis "delete" ...
 
Je viens de tester, ça le fait bien; il ne te reste plus que les pixels "actifs" de la bitmap d'origine ...
 
Le seul truc, c'est que le hitTest DOIT être de la forme "complète", c-à-d:
clip.hitTest(x,y,true);
où clip est l'objet principal et (x,y) = la position, par exemple, du missile ..
 
Si tu veux voir ce que ça donne:
http://www.rylax.be/temp/hitTest.html
http://www.rylax.be/temp/hitTest.fla
 
Tiens-moi au courant ...
 
Edit: bon il y aurait peut-être moyen de faire plus "propre" avec le nouvel objet BitmapData de Flash 8 ... mais bon ... si cette méthode te convient ....


 
 
AHAH GENIAL TON SYSTEME!!!!!!!

Reply

Marsh Posté le 22-03-2006 à 10:47:49    

'tain ! 3 mois après, tu as de la chance que ça se trouve toujours là !!! :heink:
 

Reply

Marsh Posté le 30-01-2007 à 17:49:41    

plus d'1 an, et c'est toujours là :D
 
merci :jap:


---------------
[flickr] - [Diaporama] - tilt
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed