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

  • Guests

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
  • 1918 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

  • Guests

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
  • 1918 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
  • 7017 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

  • Guests

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

  • Guests

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



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

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