Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-01-20 10:15:40 Processing : comment déplacer un array d'objets sur un chemin tracé

knarlevrai
nouveau membre
Date d'inscription: 2014-01-20
Messages: 1

Processing : comment déplacer un array d'objets sur un chemin tracé



Bonjour à tous,

je suis totalement nouveau sur Processing et je poste afin de vous demander quelques conseils. Je programme un mini-jeu où un nuage se déplace et fait tomber des gouttes d'eau. Pour l'instant j'ai créé mon nuage, c'est un array qui contient les gouttes d'eau, chaque goutte d'eau a le comportement fall() qui les fait tomber.

J'arrive à déplacer les gouttes en ajoutant x += 1 à chaque frame mais je voulais savoir s'il y avait un moyen de faire suivre un chemin (sur l'axe X) à mes gouttes d'eau ?

Voici mon code (s'il y a des erreurs ou de meilleures méthodes pour réaliser ce que j'ai fait n'hésitez pas à m'en faire part.

ps : vous pouvez cliquer sur la souris pour inverser sa direction, c'était un petit test, mais j'aimerais que cela soit automatique en suivant un chemin par exemple : aller au point A, puis B, puis C, revenir au A. Peut-être en utilisant translate ?

Drop[] cloud;
int nbDrop;
 
void setup()
{
  smooth();
  size(1280, 720);
  nbDrop = 700; // number of drops
  cloud = new Drop[nbDrop];
  for(int i= 0; i < cloud.length; i++)
  {
    cloud[i] = new Drop(); 
  }
 
}
 
void draw()
{
  background(255);
  for(int i = 0; i < cloud.length; i++)
  {
    cloud[i].draw(); // display my cloud and its drops
  }
}
 
class Drop
{
 
  float x;
  float y;
  float gravityDrop;
  float yPlus; 
  float speedDrop2;
  float etendue1;
  float etendue2;
 
 
 
 Drop() // Constructor
 {
  etendue1 = 0; // beginning cloud
  etendue2 = etendue1+200; // ending of my cloud, it always has a width of 200
  x = random(etendue1,etendue2); 
  y = random(0,height);
  gravityDrop = 0;
  yPlus = random(10,20); //adding random length to my drops so they don't look similar
  speedDrop2 = 0;
 }
 
 void draw()
 {
   display();
   fall();
   move();
 
 }
      void display() 
      {
           // drawing a drop
          line(x,y,x,y+yPlus); 
      }
 
       void fall()
      {
        // Add speed to location.
        y = y + speedDrop2;
        // Add gravity to speed.
        speedDrop2 = speedDrop2 + gravityDrop;
 
        if(y > height) // if the drop hits the ground
        {
          y = random(0,height/3);
          yPlus = random(10,20);
          speedDrop2 = 0; 
        }
 
      }
 
      void move()
      {
       if (mousePressed == true) 
       { // forward
         gravityDrop = 0.5;
         x -=1;
       } 
 
       else
       { // backward
         gravityDrop = 0.8;
         x +=1;   
       } 
      }
 
}

D'avance merci et bonne journée à tous smile

Dernière modification par knarlevrai (2014-01-20 10:26:26)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024