Partage
  • Partager sur Facebook
  • Partager sur Twitter

Irrlicht => tir

    11 juillet 2007 à 17:58:26

    voilà, encore moi et mes soucis irrlicht :)
    J'ai un soucis avec les tirs : à vrai dire je ne sais pas comment m'y prendre !
    J'ai une idée : c'est créé par exemple un node "boule de plasma" avec un certain mesh...et lui faire parcourir la visée du joueur (au centre de la camera puisque c'est un fps standard)...mais je ne sais pas ni comment detruire après le tir dès que y a une collision (qqchose du type if (collision){} ) ni comment lui faire parcourir la visée de la camera...
    Mon principal soucis vous l'aurez compris (j'éspère) est que je ne sais pas comment gerer les collisions autre qu'avec les animations (ou alors je en sais pas comment utiliser les animations) et je ne sais pas envoyer des objets dans la direction de la camera...
    Je sais je suis lourd avec mes questions mais je comprend vite...
    Aidez moi s'il vous plait !
    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2007 à 20:42:58

      Bonjour.

      Pour envoyer des objets dans la direction de la camera rien de plus simple !
      Tu créer un vecteur 3d auquel tu affecte la position de la cible de ta camera moins la position de la camera.
      Tu obtient ainsi le vecteur séparant la camera de ce qu'elle vise.
      Ensuite tu ajoute ce vecteur a la position de ton node.
      Utilise un timer pour pouvoir maîtriser la vitesse du projectile.

      Concrétement le vecteur se fait comme sa :

      irr::ITimer timer = device->getTimer();
      int lastTime = 0;

      irr::core::vector3df direction((camera->getTarget() - camera->getPosition()). normalize());

      if(lastTime - timer->getTime() > 10)
      {
          node->setPosition(node->getPosition() + direction);
          lastTime = timer->getTime();
      }


      Avec sa tu avance de 1 unitée toute les 10 ms ;)

      Après pour les collision j'ai aps trop envie de chercher :p
      Donc pour t'aiguiller je te conseil de jeter un coup d'oeil dans le tutoriel officiel numéro 7.
      Dans le code il y à la gestion des collision avec un billboard, tu peut l'adapter pour gerer une collision avec un mesh sur un autre je croi ;)
      • Partager sur Facebook
      • Partager sur Twitter
        11 juillet 2007 à 20:58:57

        Ok merci pour les indications... !
        mais ton vecteur ne marche pas !!
        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2007 à 0:57:32

          Oups désoler j'ai écris le code directe sur le SdZ j'ia pas tester, j'ai trouver l'erreur et cette fois il devrait marche, je viens d'éditer le code précédent ;)
          • Partager sur Facebook
          • Partager sur Twitter
            12 juillet 2007 à 17:04:08

            Ca ne marche toujours pas et je ne comprends pas pourquoi...
            ca ne va toujours pas vers mon viseur... setPosition(w) => position de la camera...


            En codant un petit exemple tout bête :
                if (tir == 1 && tir2 == 0)
                {
                       ShootPlasma->setPosition(w);
                       irr::core::vector3df direction((camera->getTarget() - camera->getPosition()). normalize());
                       tir2 = 1;
                           }
                if (tir2 == 1){
                       ShootPlasma->setPosition(ShootPlasma->getPosition() + direction);
                }


            Autre question : Connaissez vous le moyen pour rendre le bot toujours orienté vers nous (pas le mouvement, juste pour que l'angle de rotation me vise constamment)...?????
            Merci de votre aide précieuse.
            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2007 à 17:17:34

              Le code que tu nous montre il est bien dans ta boucle de rendu au moins ?

              Pour que quelque chose de statique te vise toujours tu peut utiliser les billaboard, il y a un exemple dans le tuto officiel.
              Mais par contre tu ne peut pas animer les billboard...
              • Partager sur Facebook
              • Partager sur Twitter
                12 juillet 2007 à 17:27:48

                Comment ca ? C'est un billboard que je tente de déplacer ptdr...C'est sûrement ça, mais c'est parce que je n'ai pas de mesh pour le tir, juste une image ! Serait-ce la raison ?
                • Partager sur Facebook
                • Partager sur Twitter
                  12 juillet 2007 à 19:08:49

                  Juste une image chargée dans le billboard ?
                  Dans ce cas sa va, le billboard contient aussi les méthodes getPosition() et setPosition() ;)

                  Après déplacer un billboard d'un vecteur normalizer revient a très peut le déplacer(au point de ne pas voir le mouvement) c'est pourquoi il faut placer le setPosition dans la boucle de rendu(while(device->run())) comme sa a chaque frame ton bill avance un petit peut.
                  Tu maîtrise tout sa avec le timer car la vitesse dépendras de la puissanc de la machine et donc ne serat pas la même pour toute les machine !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 juillet 2007 à 19:17:00

                    Il bouge, mais toujours vers un endroit constant !
                    je l'avais mis dans la boucle, ced n'est pas ça le problème c'est qu'il bouge jamais vers mon viseur mais toujours dans une direction inconnue !
                    Je veux bien te filer ma source mais tu vas me gueuler dessus (c'est pas bien codé du tout...)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 juillet 2007 à 22:08:26

                      Pour le moment ton bill devrait toujours aller dans la même direction, la direction définie au moment où tu clique.
                      Si tu veut que sa suive ton viseur il faut redéfinir direction dans tout les tours de boucle, même après avoir cliquer.

                      Si le problème ne vient pas de la envoie ton code, je mord pas :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 juillet 2007 à 13:55:15

                        Non je veux dire qu'il va toujours à un endroit constant peu importe l'orientation, , mais quand je clique, il va pas vers mon curseur mais toujours vers une orientation constante...peu importe l'orientation de ma cam au moment ou je clique...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 juillet 2007 à 17:10:22

                          Ok bah là je peut pas trop t'aider faut envoyer ton code :p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 juillet 2007 à 17:21:29

                            Je te l'ai envoyé en mp...
                            Mis à part que le code est très pourri, je ne vois pas l'explication du tir foireux...
                            Je n'ai pas mis les resources avec, tu comprendras peut-être sans, mais si tu veux le projet entier, fais moi signe !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 juillet 2007 à 18:20:37

                              Non c'est bon pour les ressources.
                              La plupart sont de irrlicht et le reste je l'ai fais moi même ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 juillet 2007 à 18:22:40

                                La demo irrlicht contient un tir qui fonctionne tres bien, il faut chercher avant de demander...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juillet 2007 à 18:42:21

                                  Sans blague ????? T'es vraiment un génie! -_-
                                  Merci pour cette info, j'avais pas regardé au moins mille fois avant !
                                  Le veritable problème n'est pas de faire du mauvais esprit mais de comprendre pourquoi de telles lignes de codes ne marchent pas...même si j'avais une autre solution, je continuerais à chercher pourquoi ca ne marche pas. De plus mon tir n'est pas instantanné, c'est comme une rocket qui se déplace peu à peu.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Irrlicht => tir

                                  × 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