Probleme avec le hitTest

Résolu
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011 - 29 oct. 2009 à 20:57
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011 - 31 oct. 2009 à 17:10
Voila je suis entrain de réaliser un jeu du style "shoot em up",
plusieurs clip qui ce balade alléatoirement que j'ai nommés (cible0,cible1,cible2,....ciblen),et des balles (balle0,balle1,balle2,....ballen),le je consiste a tiré sur ces cibles avec ces balles, mais voila je ne trouve pas l'astuce pour réaliser des "hitTest" sur plusieurs clip.
pour me comprendre voila un exemple :

//--les balles-------------------------------------------------------------
function balle() {
var i = getNextHighestDepth();
var balle = _root.createEmptyMovieClip("balle"+i, i);
balle.lineStyle(4, 0xC44211, 100);
balle.moveTo(0, 5);
balle.lineTo(5, 0);
balle.moveTo(5, 0);
balle.lineTo(0, 5);
balle._x = _xmouse;
balle._y = _ymouse;
balle.onEnterFrame = deplace1;
}
//-------les cibles-------------------------------------------------------
function cible() {
var j = getNextHighestDepth();
var cible = _root.createEmptyMovieClip("cible"+j, j);
cible.lineStyle(18, 0x0F11CD, 100);
cible.moveTo(0, 0);
cible.lineTo(0, 8);
cible.moveTo(0, 8);
cible.lineTo(8, 0);
cible._x = 100;
cible.onEnterFrame = deplace2;
}
//-----deplacement 1 (balles)----------------------------------------------
function deplace1() {
this._y -= 20;
if (this._y<-30) {
    this.removeMovieClip();
}
}
//-----deplacement 2 (cibles)----------------------------------------------
function deplace2() {
this._y += 12;
if (this._y>450) {
this.removeMovieClip();
}
}

Merci .................

7 réponses

carton99 Messages postés 103 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 18 mars 2012
30 oct. 2009 à 19:44
Je te donne un lien pour crée un "shoot em up" c'est le meilleur tutoriel AS2 objet que je connaisse .
C'est tres mal expliquer dans les details mais sa fonctionne à merveille.
Si tu passe le chapitre 5 tu poura réaliser ton jeu sans soucis tres rapidement .

http://www.kongregate.com/labs
3
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011
31 oct. 2009 à 17:10
je vient de réussir un hitTest mais qu'avec des projectile sur une seul et unique cible "cible", a savoir que la cible et un MovieClip que j'ai met sur scène (exp : cercle), voici le code :

var tab=new Array();
//---------Projectile---------------------------------
function  projectile () {
var i=getNextHighestDepth();
var balle=_root.createEmptyMovieClip("balle"+i,i);
balle.beginFill(0xCF1545,100);
balle.moveTo(0,0);
balle.lineTo(10,0);
balle.lineTo(10,10);
balle.lineTo(0,10);
balle.lineTo(0,0);
balle.endFill();
balle.onEnterFrame=deplaceproj;
tab.push(balle);
}
//----Deplacemement----------------------------------
function  deplaceproj () {
this._y+=20;
if (this._y>400){
this.removeMovieClip();
}
for (test in tab){
if (_root["balle"+test].hitTest(cible)){
trace("touché");
_root["balle"+test].removeMovieClip();
}
}
}
//--------declanchement des évènements------------------------
onMouseDown=function  () {
projectile();
}


j'avance tout doucement........ merci pour ton aide Carton99

                      
3
carton99 Messages postés 103 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 18 mars 2012
30 oct. 2009 à 14:04
tres simple je te donne un exmeple d'utilisation sur de mes programme
for(var i in _root.vaisseau1.tabtir)
{
if(this.hitTest( _root.vaisseau1.tabtir[i] ) )
{
}
}

tu n'a plus qu'a crée le tableau tabtir qui permetera de te reperer sur t'es objets
tu le déclate de cette facon
tabtir = [];
et tu l'utilise, comme sa:

var tir_un = _root.attachMovie( "tir_un" , "tir_un" + _root.getNextHighestDepth(), _root.getNextHighestDepth() );
tabtir.push(tir_un);
0
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011
30 oct. 2009 à 18:11
merci mais j'ai pas bien saisi le truc

                      
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011
30 oct. 2009 à 18:35
peu-tu m'éclaircir sur ce point ? merci de ton attention


                      
0
carton99 Messages postés 103 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 18 mars 2012
30 oct. 2009 à 19:38
oui dsl je vai esseyer d'etre plus clair .

la fonction hittest fonctionne de cette facon
if(this.hitTest( un_movie_clip ) )

tous le probleme et de bien définir le "un_movie_clip" je vai de donner un exmple simple .

Dans ta scenne tu nome directement un movieclip mon_movieclip et bien pour savoir si ce mv est en collision avec celui que tu veu tester tu fait :
tu te place dans un MV
if(this.hitTest( _root.mon_movie_clip ) ) si le test réussi tu est dans le if .

Mais ton probleme est plus compliqué car tu veu faire le test entre les boules et les cible .Tu a deux facon
La premeire hyper déconseillé tu cré 10 boules sur ta scène est tu les nomes les dix et tu fait 10 hit test pour chaque cible crée .
A toi de gérer inteligement les boules cad à les placer très loins si tu veu pas les voir .

La deuxieme facon "la mieu" est de crée une liste chainé ou plutot dans flash un tableau et d'enregistrer les movies clip dans le tableau afin d'accéder au MC de cette facon _root.mon_movieclip.tableau[positiondansletableau]
exmeple d'utilisation
if(this.hitTest( _root.mon_movieclip.tableau[positiondansletableau] ) )


Pour moi tu t'attaque à une partie tres dur ,acharne toi dessus parcque sinon impossible de faire un "shoot em up" et sa vaut le coup.
0
lounnaci Messages postés 26 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 18 juin 2011
31 oct. 2009 à 15:43
Merci Merci Merci carton99 tu me sauve la vie


                      
0
Rejoignez-nous