Forums Développement Multimédia

Aller au contenu

- - - - -

probleme concernant le hitTestObject d'un hero avec les points qu'il ramasse dans la platforme du jeux : actionscripts 3

CODE

6 réponses à ce sujet

#1 Hassan1981

    Ceinture Blanche

  • Members
  • Pip
  • 4 messages

Posté 05 May 2017 - 22:25 PM

bonsoir les amis,svp je cherche du l'aide, je suis entrain de realiser un jeux de platforme dans lequel le hero va ramasser des points pour augmenter son score,alors le probleme c'est j'ai mis les points dans un array comme ceci : moviclip1.moviclip2.Mespoints[i]
c'est a dire mon liste de points est l'interieur du moviclip 2 qui est lui meme dans a l'interieur du moviclip1, alors comment je peux tester le hitestobject du hero avec la liste des poitns :


var pointsArray: Array = new Array();

remarque :petitPoint c'est le nom de la classe du moviclip point dans la bibliotheque a exporter pour actionscript

for (var m = 0; m < numChildren; m++) {
if (getChildAt(m) is petitPoint) {
pointsArray.push(getChildAt(m));
}

}

addEventListener(Event.ENTER_FRAME, pickupsitems2);
function pickupsitems2(event: Event): void {
for (var h = 0; h < pointsArray.length; h++) {
if (contains(pointsArray[h])) {
if (
MonJoueur.hitTestObject(pointsArray[h])) {
removeChild(pointsArray[h]);
ScoreCount = ScoreCount + 1;
score.text = ScoreCount.toString();

}
}
}

}
merci pour vos conseils

#2 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1682 messages

Posté 06 May 2017 - 09:11 AM

essaie en utilisant

MonJoueur.getBounds(stage).intersects( pointsArray[h].getBounds(stage) ) {
 
à la place de

MonJoueur.hitTestObject(pointsArray[h])) {
 


#3 Hassan1981

    Ceinture Blanche

  • Members
  • Pip
  • 4 messages

Posté 06 May 2017 - 12:30 PM

merci pour ta reponse , cela me donne l'erreur :Erreur de syntaxe : rightparen est attendu devant leftbrace.
on ajoutant le rightparen ca elimine l'erreur mais toujours la collision entre Monjoueur et l array des points ne se fais pas

#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1682 messages

Posté 06 May 2017 - 13:32 PM

j'ai fait un test avec hitestobject(), il fonctionne
enlève cette ligne pour tester

if (contains(pointsArray[h])) {
 


#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 06 May 2017 - 20:49 PM

Salut,

Un peu de lecture peut être utile ;)
http://forums.mediab...iche_collisions

Éviter de stocker des tableaux dans des movieClip me semble aussi être une meilleure approche.

#6 Hassan1981

    Ceinture Blanche

  • Members
  • Pip
  • 4 messages

Posté 06 May 2017 - 23:51 PM

merci pour vos reponse,
pol2095

j'ai tester ce code :
var pointsArray: Array = new Array();


for (var m = 0; m < numChildren; m++) {
if (getChildAt(m) is petitPoint) {
pointsArray.push(getChildAt(m));
}

}



addEventListener(Event.ENTER_FRAME, pickupsitems2);
function pickupsitems2(event: Event): void {
for (var h = 0; h < pointsArray.length; h++) {
if (Monjoueur.getBounds(stage).intersects(pointsArray[h].getBounds(stage))) {
removeChild(pointsArray[h]);
trace("ok");
/*ScoreCount = ScoreCount + 1;
score.text = ScoreCount.toString();*/
/* var son: SonH = new SonH();*/
/* son.play();*/

}


}
}

cela ne met aucune erreur mais le hitest ne se produit pas,

merci Monsieur Spi
pour l'article

#7 Hassan1981

    Ceinture Blanche

  • Members
  • Pip
  • 4 messages

Posté 07 May 2017 - 02:10 AM

enfin le probleme est reglé,pour ceux qui renctrerons le meme probleme voici comment faire : j'ai mis un code dans le timelin d'un element de mon array :

var p = this.parent.parent.parent as MovieClip ;
p.pointsArray.push(this);

et dans le code principale dans la scene :

var pointsArray: Array = new Array();

for (var i = 0; i < pointsArray.length; i++) {

var S = pointsArray[i];
if (S.hitTestObject(Monjoueur)) {
trace("ok");
}
}
merci pour l'aide




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP