Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment feriez vous ?

personnage - sol

    27 novembre 2007 à 20:20:12

    Salut,

    Je voudrais gerer les collisions de mon personnage avec le decort.

    Mais comment faire ?

    J'ai pensé a faire cela :
    avec Newton Game Dynamic, faire une boite de collision autour du perso
    des autres boites de collisions aileurs.

    Mais si la boite doit toujour reste horizontale, et les collision peuvent la faire basculer...
    Il faudrais pouvoir bloquer les rotation sur les boites de collisions, mais je ne pense pas que se soit possible, non ?

    Sinon, comment feriez vous ?

    Merci bcp d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2007 à 20:22:00

      pas tout compris c'est en 3D que tu parles ?
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2007 à 21:13:20

        oui,
        j'utilise irrlicht comme moteur 3D
        Mais pour gerer les collision je pensais utiliser Newton Game Dynamic.
        Pour les objets normaux, ok, tout est géré par le moteur physique.

        Mais pour le personnage que l'on deplace, je pensais faire un solide auquel on applique des forces pour le deplacer, ainci que le poid...
        Sauf que le moteur physique ne prend pas seulement en compte les déplacement, mais aussi les rotation, et mon personnage doit rester debout...
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2007 à 21:21:37

          dans beaucoup de FPS (peut etre pas les nouveaux de la mort qui tue (Crysis), mais dans les FPS du genre Quake 3 et cie), ils ne se cassent pas la tete avec ça :
          le personnage est encadré par un pavé englobant de type AABB : Axes Align Bounding Box.
          Donc pas de rotation de celui ci : toujours aligné avec les axes absolus.

          Le monde est représenté par un BSP.
          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

            27 novembre 2007 à 21:26:40

            Avec irrlicht, tu peux utiliser les arbres de collisions, et je peux te dire que c'est assez puissant.
            • Partager sur Facebook
            • Partager sur Twitter

            La maîtrise des fondamentaux est le fondamental de la Maîtrise.

              27 novembre 2007 à 21:35:36

              Merci pour vos réponces, je regarde au niveau de l'arbre de collision de irrlicht et je reviens :)

              EDIT :

              J'ai regardé au niveau des collisions avec irrlicht, puis aussi un peu sur NewtonGameDynamics.
              Il se trouve qu'une fonction existe :
              NewtonBodyGetAABB mais je ne sais pas a quoi elle sert...

              Alors j'ai utilisé les Bounding box de irrlicht, et sa marche effectivement parfaitement :)

              Seulement, maintenant comment puis-je faire des sauts ? Vu que la gravité est gérée par l'arbre de collision de irrlicht, je n'est pas la position Y modifié par l'arbre...

              Il faudrais pouvoir rajouter une impultion au node, mais est-ce possible ?

              Pour les deplacements sur XZ, je peut le faire normalement.

              Merci d'avance.
              • Partager sur Facebook
              • Partager sur Twitter
                1 décembre 2007 à 15:54:44

                ben tu rajoute une fore sur l'axe des Y d'une certaine intensité et puis vu qu'il y a de la gravité le pers va tomber

                pour ce faire utilise la fonction NewtonBodySetVelocity

                pour voir son utilisation regarde dans la doc
                • Partager sur Facebook
                • Partager sur Twitter
                  1 décembre 2007 à 17:19:49

                  Oui mais comme finalement j'utilise irrlicht ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 décembre 2007 à 8:36:32

                    Je te conseil de ne pas utiliser un systeme de collisions de irrlicht :

                    Demonstration :

                    Un PC pas trés puissant fais du 20fps.
                    Une balle se déplace a plus de 1500km/h soit 1500/3.6m/s = 416m/s.
                    Ta boite fais 50cm de profondeur disons étant donné que la boucle qui va géré tes collisions passera 20 fois par secondes sur la gestion des collisions tu auras un écart de déplacement de 21m entre chaque frame !
                    C'est a dire que ton model ne sera meme pas reconnu car la balle aura une nouvelle position derriere ou dans ton model.

                    Shematisation :

                    * = projectile
                    l-l = cible

                    toi -> tir* l-l
                    aprés frame :
                    toi l-l *

                    En gros dans un jeu tu ne peux pas utiliser un systeme de projectile car l'impression de mouvement que tu as est en faite une illusions du au raffraichissement rapide par rapport au nombre maximum d'image par seconde visible.

                    Dans ce cas je te propose d'utiliser une line je sais que ca existe et celle-ci detetcte le premier model rencontré donc au moment ou tu shoot tu récupére un pointeur sur le model touché si c'est un mur tu applique l'animation de particules adéquatte et tu blit ta texture au point de collision.
                    Si c'est un joueur la c'est un peu plus compliqué car il te faut modifier la classe et donnez un ID et une correspondance virtuel a chaque object.

                    Regarde le tuto 7 avec les collisions sur les mesh et le highlight des mesh.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 décembre 2007 à 8:53:06

                      Tu peux faire ça pour le saut:
                      -Quand t'appuis sur la touche du saut, incrémante la coordonné Z, puis, quand t'atteins le max que tu désires, décrementes le Z avec deux fois la vitesse d'incrémentation pour t'arrêter eu niveau du sol! (tout bête).
                      • Partager sur Facebook
                      • Partager sur Twitter

                      La maîtrise des fondamentaux est le fondamental de la Maîtrise.

                      Anonyme
                        2 décembre 2007 à 10:52:44

                        Citation : fissal_houate

                        Tu peux faire ça pour le saut:
                        -Quand t'appuis sur la touche du saut, incrémante la coordonné Z, puis, quand t'atteins le max que tu désires, décrementes le Z avec deux fois la vitesse d'incrémentation pour t'arrêter eu niveau du sol! (tout bête).


                        C'est moche comme technique. Si tu veux faire qqch de bien réaliste, regarde ces pages avant la suite de mon message :
                        http://fr.wikipedia.org/wiki/Cin%C3%A9matique#Mouvement_rectiligne

                        Il est facile d'avoir deux fonctions pour calculer le déplacement :
                        verticalement : <math>\(hauteur%20%20%3D%20%5Cfrac%7B1%7D%7B2%7D%28-g%29t%5E2%20%2B%20v_%7By0%7Dt\)</math>
                        horizontalement : <math>\(distance%20%3D%20%5Cfrac%7B1%7D%7B2%7Da_%7Bx%7Dt%5E2%20%2B%20v_%7Bx0%7Dt\)</math>
                        ça rendra tout de suite les chose plus belle. ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 décembre 2007 à 11:15:27

                          Citation : tenmaCA

                          Regarde le tuto 7 avec les collisions sur les mesh



                          Quel tuto ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            2 décembre 2007 à 19:00:15

                            l'officiel de irrlicht.sourceforge.net
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 décembre 2007 à 21:50:19

                              Ok, je regarde sa, mais juste en passant :
                              Je remarque que dans le tuto, le mesh de la map est un BSP.
                              Cela influt-il sur la suite si j'utilise un 3ds ?

                              Pour le moment avec les animator de Irrlicht, sa marchait avec des 3ds.(mais je ne pouvais pas monter sur des escaliers, ou des pentes)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 décembre 2007 à 22:34:29

                                J'utilise la même technique que dans le tuto 7 de Irrlich, mais mon terrain n'est pas une map BSP, mais un fichier 3ds.
                                Les collision sont OK : le perso ne tombe pas à travers le sol, et ne traverse pas les murs, mais pour se qui est de monter une pente (même super legère) sa bloque comme un mur.

                                Suis-je obligé de passer par une map BSP ?
                                De plus, les BSP permettent de moins calculer de polygones non ? avec leur espaces découpé?
                                Comment font les pro? ce n'est pas des BSp que je sache?

                                Sinon, je pourais toujour revenir sur l'option de Newton Game Dynamique, mais je ne sais pas comment modifier manuellement les rotations d'une primitive, ou bien la mettre par default en AABBox. La seule fonction qui se refere à une AABBox est celle qui permet de la récuperer en fonction d'un primitive créé avant...

                                Merci bcp ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 décembre 2007 à 2:12:15

                                  Ca bloque car ton coefficient sur y dans ton collisions animator doit-etre trop important donc ton personnage plante.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 décembre 2007 à 9:13:59

                                    ma gravité est à 0.01;
                                    j'ai essayé 0.001 mais le perso ne tombe plus.

                                    De plus j'ai essayé avec 0 en gravité, et de "voler" vers une pente, sa bloque toujours.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 décembre 2007 à 18:48:00

                                      Salut,
                                      j'ai essayé de changer et d'exporter en .obj, et la surprise, les collisions marchent, je peut marcher sur les pentes, etc...
                                      Super ! :)
                                      Parcontre le model n'est pas texturé et je ne sais pas si les .obj supportes l'animation.

                                      [EDIT]
                                      A oui, aparament sa ne suporte pas l'animation, ni les bones, sa ne bouge pas et les bones sont sortis comme des polygones à afficher ^^
                                      Image utilisateur
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Comment feriez vous ?

                                      × 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