Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'orientation d'un objet Processing

Sujet résolu
    18 avril 2016 à 15:06:37

    Bonjour,

    Je développe un jeu Astéroïde, dont le but et de détruire les astéroïdes sur l'écran sans se faire toucher.

    Globalement, il correspond à ce jeu : http://www.toupty.com/jeuasteroids.html

    Cependant, je rencontre un problème, je souhaiterais en effet que mon vaisseau tourne sur lui même en fonction de la position de la souris, mais après plusieurs tentative je n'y arrive pas.

    Je travaille sur Processing, il y a donc un fonction qui s'appelle "rotate" qui me permet d'effectuer une rotation sur le vaisseau. Je tient à préciser que le vaisseau peut se déplacer sur l'écran.

    Voilà une image de ce que je veut arriver à faire car j'ai du mal à l'expliquer clairement:

    Voici le code de mon objet Vaisseau:

    class Vaisseau
    {
      PVector v;
      float angle;
      int x;
      int y;
      int w;
      
      Vaisseau()
      {
        v= new PVector(mouseX,mouseY);
        x = 250;
        y = 250;
        w = 50;
        angle = 0;
      }
      
      void dessiner()
      {
        bouger();
        fill(255);
        
        pushMatrix();
        translate(x,y);
        rotate(radians(angle));
        
        rect(0,0,w,w);
        popMatrix();
        
        
      }
      
      void bouger()
      {
        
        v.x = mouseX;
        v.y = mouseY;
        
        
        if(keys[0] == true)
        {
          if(y <mouseY)
          {
            y++;
            if(x >mouseX)
              x--;
            else if(x < mouseX)
              x++;
          }
          else if(y > mouseY)
          {
            y--;
            if(x >mouseX)
              x--;
            else if(x < mouseX)
              x++;
          }
          else if( x < mouseX)
          {
            x++;
            if(y >mouseY)
              y--;
            else if(y < mouseY)
              y++;
            
          }
          else if(x >mouseX)
          {
            x--;
            if(y >mouseY)
              y--;
            else if(y < mouseY)
              y++;
          }
          
        } 
        if(keys[1] == true)
        {
          angle++;//x--;
        }
        if(keys[2] == true)
        {
          y++;
        }
        if(keys[3] == true)
        {
          angle--;//x++;
        }
        if(keys[4] == true)
        {
          angle++;
        }   
        
      }
      
      void agir()
      {
        
      }
      
      void explosion()
      {
        
      }
      
    }
    
    
    void keyPressed()
    {
      if(key == 'z')
        keys[0] = true;
      if(key == 'q')
        keys[1]= true;
      if(key == 's')
        keys[2] = true;
      if(key == 'd')
        keys[3] =true;
      if(key == 'a')
        keys[4] =true;
    }
    
    void keyReleased()
    {
      if(key == 'z')
        keys[0] = false;
      if(key == 'q')
        keys[1]= false;
      if(key == 's')
        keys[2] = false;
      if(key == 'd')
        keys[3] = false;
      if(key == 'a')
        keys[4] =false;
    }

    Je ne sais pas si j'ai été très clair, excusez moi si je me suis mal exprimer.

    Si quelqu'un pourrait m'éclairer, cela me serai très utile, car ce qui me bloque c'est les mathématiques, je pense qu'il faut utiliser un vecteur mais je ne sais pas trop comment procéder.

    Merci d'avance.

    -
    Edité par y@cine 18 avril 2016 à 16:09:05

    • Partager sur Facebook
    • Partager sur Twitter

    N'hésites pas à faire un tour sur mon portfolio https://portfolio.yacinechalabi.com/

    J'ai aussi un blog https://yacinechalabi.com/

    Problème d'orientation d'un objet Processing

    × 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