Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash
Flash Forum d'entraide sur la technologie Flash (Cours, FAQs, Sources)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/05/2007, 13h44   #1
Membre Expert
 
Avatar de Manumation
 
Inscription : mai 2007
Messages : 1 161
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2007
Messages : 1 161
Points : 1 184
Points : 1 184
Par défaut Problème collisions HitTest()

Bonjour tout le monde !!

Voici mon tout premier message sur developpez...En temps normal, je ne poste jamais sur les forums, les réponses s'y trouvant déjà, mais là, je me suis dit qu'il était peut-être préférable de le faire...

Je suis en train de réaliser un casse-briques en flash, jusque-là, pas de problème...

Mais j'utilise la méthode HitTest pour détecter d'éventuelles collisions entre la balle et les briques et j'ai un petit souci, je m'explique :

Parfois, lorsque la balle arrive sur une brique (principalement une brique incassable), elle se met à suivre ses contours, au lieu d'être renvoyée à l'opposé...

Je ne sais pas si j'utilise la bonne méthode, ou si je fais faux...

Je sais qu'il y a d'autres solutions pour gérer les collisions, mais étant débutant en flash, je ne comprends pas forcément tout...

Pouvez-vous m'aider, svp !

Voici mon code que je place sur la brique incassable :

Code :
1
2
3
4
5
6
7
8
 
onClipEvent (enterFrame) {
 
if(_root.balle.hitTest(this)){
		_root.balle.yspeed=-_root.balle.yspeed;
		}
 
}
Manumation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 10h06   #2
Membre Expert
 
Avatar de dom_dev
 
Inscription : février 2006
Messages : 2 067
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 2 067
Points : 2 114
Points : 2 114
bonjour,

c'est bizarre j'ai testé ton code il marche parfaitement !

Pièce jointe 14227

(c'est du flash 8)
__________________
Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
MERCI
dom_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 09h11   #3
Membre Expert
 
Avatar de Manumation
 
Inscription : mai 2007
Messages : 1 161
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2007
Messages : 1 161
Points : 1 184
Points : 1 184
Rebonjour ! (désolé, hier je n'étais pas là...)

Tout d'abord merci d'avoir répondu...
Alors oui, effectivement mon code marche bien...En tout cas pour une brique...

Mais mon problème, c'est que j'ai créé un niveau un peu plus complexe, avec des briques qui se cassent et d'autres qui ne se cassent pas...Et théoriquement, tout devrait fonctionner...Mais parfois (je dirais même souvent), la balle ne rebondit pas correctement sur la brique, elle suit la bordure, puis repart dans une direction aléatoire...C'est cela que je ne saisis pas...

ps : Cela arrive principalement quand la balle arrive dans les coins...

Au début, je pensais que le HitTest se faisait trop tard et que la balle avait le temps de rentrer dans la brique et de faire le hittest à l'intérieur...Mais après plusieurs essais infructueux, il s'est avéré que ce n'était pas ça qui posait problème...

Je me suis déjà orienté vers d'autres solutions comme la collision circulaire (en calculant la distance entre les 2 centres), mais comme son nom l'indique elle est réservé aux cercles...

Je pense désormais à utiliser un système de tuile...Mais j'ai un encore un peu de mal à comprendre...Est-il possible de m 'aider ? (En tout cas pour le principe de base...)
Manumation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h03   #4
Membre du Club
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2006
Messages : 147
Points : 56
Points : 56
Bonjour manumation,


Voilà après explication de ton erreur je viens de remarquer que j'ai justement la même erreur dans mon petit jeu aussi. Donc si tu a trouver quelque chose ou si tu a envie qu on mette en commun nos progs ca sera avec plaisir



a+++
vallgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 16h29   #5
Membre Expert
 
Avatar de Manumation
 
Inscription : mai 2007
Messages : 1 161
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2007
Messages : 1 161
Points : 1 184
Points : 1 184
Bonjour Tout le monde...

Avec beaucoup de persévérance, je suis arrivé a une solution un peu plus satisfaisante (malheureusement pas totalement...)

Si ça intéresse quelqu'un :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
 
onClipEvent (enterFrame) {
 
// trace (_root.balle.yspeed) ;
 
if(_root.balle.hitTest(this)){
 
                if (_root.balle.yspeed < 0) { // la balle monte
                        _root.balle.yspeed =  Math.abs(_root.balle.yspeed);
						_root.balle._y = _root.balle._y + 4;
 
                } else { // la balle descend
					_root.balle._y = _root.balle._y - _root.balle.yspeed;
					_root.balle.yspeed = - Math.abs(_root.balle.yspeed);
 
				}
 
			} 
 
}
Et si quelqu'un a une autre idée, elle est la bienvenue !

Sur ce , je vous remercie !
Manumation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h01   #6
Membre du Club
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2006
Messages : 147
Points : 56
Points : 56
merci d'avoir partagé ton code!!! a+++
vallgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h04   #7
Membre Expert
 
Avatar de Manumation
 
Inscription : mai 2007
Messages : 1 161
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2007
Messages : 1 161
Points : 1 184
Points : 1 184
Mais de rien ! Le Forum c'est fait pour ça..Allez, bye !
Manumation est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h58.


 
 
 
 
Partenaires

Hébergement Web