Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Flash] Empilement de cubes générés dynamiquement

    19 décembre 2005 à 18:03:24

    Bonjour à tous,

    Voila je développe un jeu qui a pour but de deplacer une petite plateforme qui serivra a empiler des cubes descendant verticalement
    Donc les cubes sont généré via un attachMovie mais je n'ai aucune idée du moyen de les faire s'empiler les uns sur les autres. J'ai reusi avec le hitTest à empiler le premier cube sur la plateforme. Si quelqu'un pouvait m'expliquer la marche a suivre pour les faire s'empiler les uns sur les autres

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 décembre 2005 à 18:27:36

      Les hittest c'est mal!
      Lien génial #1 : http://oos.moxiecode.com/
      Lien génial #2 : http://www.tonypa.pri.ee/tbw/

      A+ :)
      • Partager sur Facebook
      • Partager sur Twitter
        19 décembre 2005 à 18:32:01

        Merci de repondre mais je trouve pas mon bonheur des tes sites, y'en a trop j'arrive pas a cibler ce que je recherche
        • Partager sur Facebook
        • Partager sur Twitter
          19 décembre 2005 à 19:33:05

          Je n'ai pas trop compris le principe de ton jeu mais si tes cubes ont une hauteur déterminée et fixe tu peux te servir d'un tableau à 2 ou 3 dimension pour voir comment ils vont s'empiler. Je n'ai pas trop le temps de t'expliquer, mais c'est assez simple, avec un 1 ou un 0 dans la case du tableau suivant si elle est vide ou pas, il suffit de tester celle d'en dessous (x-1) pour voir si on peut descendre d'un étage. Après c'est une histoire de "smoother" le mouvement.

          Comme la dit victor, le hittest c'est mal, mieux vaut l'éviter quand on peut (un hittest ça passe mais 100 par seconde ça rame !)
          • Partager sur Facebook
          • Partager sur Twitter
            19 décembre 2005 à 20:12:19

            Ok pour le HitTest (j'ai bien compris ton système de tableau a 2 dimensions, je programme depuis un certain temps mais pas en flash).

            Mais y'a un truc que je pige pas (en ce qui concerne le flash)


            barre.onEnterFrame=function(){
                    if(Key.isDown(Key.LEFT)){
                            if(this._x<=160)
                                    this._x=160;
                            else
                                    this._x-=8;
                    }

                    if(Key.isDown(Key.RIGHT)){
                            if(this._x>=450)
                                    this._x=450;
                            else
                                    this._x+=8;
                    }                     

            }

            decor.debut=getTimer()
            decor.laps=2000;
            decor.id=1;
            decor.onEnterFrame=function(){
                    if(getTimer()>(this.debut+this.laps)){
                            _root.attachMovie("cube","cube"+this.id,this.id);
                            _root["cube"+this.id]._x=160+random(300);             
                                   
                            _root["cube"+this.id].onEnterFrame=function()
                            {
                                   
                                    if(this.hitTest(barre))
                                    {
                                            this._x = barre._x;
                                    }
                                    else{
                                            this._y+=4;               
                                            if(this._y>430)
                                                    this.removeMovieClip();
                                    }
                            }             
                            this.id+=1;                         
                            this.laps+=1000;
                    }
            }
            stop();


            Voila le code que j'avais. Je doit donc stocker tous les carrés qui tombent dans un array() lorsqu'il touchent la barre... Mais coment figer leur deplacement vertical ?
            • Partager sur Facebook
            • Partager sur Twitter
              21 décembre 2005 à 2:44:30


              barre.onEnterFrame=function(){
                      if(Key.isDown(Key.LEFT)){
                              if(this._x<=160)
                                      this._x=160;
                              else
                                      this._x-=8;
                      }

                      if(Key.isDown(Key.RIGHT)){
                              if(this._x>=450)
                                      this._x=450;
                              else
                                      this._x+=8;
                      }                     

              }

              decor.debut=getTimer();
              decor.laps=2000;
              decor.id=1;
              decor.onEnterFrame=function(){
                      if(getTimer()>(this.debut+this.laps)){
                              _root.attachMovie("cube","cube"+this.id,this.id);
                              _root["cube"+this.id]._x=160+random(300);             
                                     
                              _root["cube"+this.id].onEnterFrame=function()
                              {
                                     
                                      if(this.hitTest(barre))
                                      {
                                              this._x = barre._x;
                                      }
                                      else{
                                              this._y+=4;               
                                              if(this._y>430)
                                                      this.removeMovieClip();
                                      }
                              }             
                              this.id+=1;                         
                              this.laps+=1000;
                      }
              }


              Si je comprend bien ton code, a chaque création de cube, la variable "id" est augmentée de 1. On peut donc déduire que cette variable contient aussi le nombre de cubes sur le jeu. Tout tes cubes portent des noms similaires:
              • cube1
              • cube2
              • cube3
              • cube4
              • cube5
              • ... etc


              Tu devras donc faire ton hittest pour chacun de ces cubes! (dsl, je sais que les hittests c'est pas l'idéal mais ca reste potable)

              Ok, mais comment faire !?!


              C'est simple: tu vas devoir faire une boucle.

              Je ne sais pas vraiment où sont situés tes cubes, je vais déduire qu'ils sont à "_root".

              for(nombre = decor.id; nombre > 0; nombre--)
              {
                //on prend le nombre de cubes et on va faire une condition pour chaque cube qui existe
                if(_root["cube"+nombre].hitTest(tonclip._x,tonclip._y,false))
                {
                  //je mix le mot "cube" et le nombre pour créer tes noms: cube1, cube2, cube3, etc...
                  //sa touche a un de tes cubes présents
                }
              }
              • Partager sur Facebook
              • Partager sur Twitter

              [Flash] Empilement de cubes générés dynamiquement

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown