Forums Développement Multimédia

Aller au contenu

Mini-jeu Hittest multiples et incrémentation du score en AS3 [débutant]

incrémentation du score Hittest collisions jeux CODE

1 réponse à ce sujet

#1 veyer

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 31 August 2012 - 19:20 PM

Bonsoir à tous,

Je regrette de toujours finir par vous demander de l'aide lorsque je ne trouve aucune solution ailleurs (je débute dans l'as3).
Mais je part du principe que peut-être que d'autres personnes sont dans mon cas et rencontrerons le même problème et se sentirons concèrnés par mon post.

Donc, cela concerne un projet de jeu simplissime en flash pour android, on dirige une mouette avec l'accéléromètre pour lui faire attraper des étoiles.

Voici le code :


var score:Number = 0;
var accel:Accelerometer;
accel = new Accelerometer();
if (Accelerometer.isSupported)
{
accel.addEventListener(AccelerometerEvent.UPDATE, accelMove);
}
else
{
//pas accelerometre
}
function accelMove(event:AccelerometerEvent):void
{
mouette.x -=  event.accelerationX * 80;
if (mouette.x < 0)
{
  mouette.x = 0;
}
else if (mouette.x > (stage.stageWidth - mouette.width) )
{
  mouette.x = stage.stageWidth - mouette.width;
}
}
star.addEventListener(Event.ENTER_FRAME,checkHitTest);

function checkHitTest(event:Event){
  if(mouette.hitTestObject(star))
  {
   StatusTxt.text = "ok";
   Object(root).star.play();
   score++;
  }
}
 

J'ai remplacé l'accéléromètre par la souris pour que vous puissiez tester le projet, le code ci-dessous :

Voici un aperçu du projet : http://rchavagne.per...r/mouette2.html


var score:Number = 0;
addEventListener(Event.ENTER_FRAME, movePlayer);
function movePlayer(e:Event):void
{
mouette.x = stage.mouseX;
if (mouette.x < 0)
{
  mouette.x = 0;
}
else if (mouette.x > (stage.stageWidth - mouette.width) )
{
  mouette.x = stage.stageWidth - mouette.width;
}
  mouette.y = stage.mouseY;
if (mouette.y < 0)
{
  mouette.y = 0;
}
else if (mouette.y > (stage.stageWidth - mouette.width) )
{
  mouette.y = stage.stageWidth - mouette.width;
}
}
star.addEventListener(Event.ENTER_FRAME,checkHitTest);

function checkHitTest(event:Event){
  if(mouette.hitTestObject(star))
  {
   StatusTxt.text = "ok" ;
   Object(root).star.play();
   score++;
  }
}
 

Pour ceux que ça interesse (les débutants comme moi bien entendu) voici le code de la collision entre l'étoile et la mouette,


star.addEventListener(Event.ENTER_FRAME,checkHitTest);
function checkHitTest(event:Event){
  if(mouette.hitTestObject(star))
  {
   //ici placer l'action engendrée par la collision, soit dans mon cas:
   StatusTxt.text = "ok" ;
   Object(root).star.play();
   score++;
  }
}
 

Mon principal problème est donc l'incrémentation du score qui ne fonctionne pas ...
ensuite j'aimerai créer plusieurs collisions avec une éventuelle deuxième étoile nommée star2 par exemple. Je ne sais pas comment m'y prendre, ou placer le code de la deuxième collision...

Voila, si une âme charitable pouvait juste m'aiguiller sur le score ou bien les collisions multiples, ce serait vraiment sympa. Merci beaucoup :)

#2 Broutous

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 101 messages

Posté 07 September 2012 - 23:50 PM

Salut,

comment t'y prends tu pour afficher la valeur de score ? Je ne vois ni trace ni mise à jour de .text sur un TextField dans la fonction appelée à la collision...

Si tu l'as mis dans le code original, que te renvoie trace(score) ?

J'adore faire voler cette mouette en piqué telle un zéro japonais en 42... (pas fine la référence, j'avais que ça)
"Regardez-moi ça ! J'ai de la corne sur les doigts on dirait des pieds..."



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