#0 

30-12-2009 15:07:18

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Salut,

J'aimerai savoir comment faire pour détecter une collision entre deux nodes? Je sais que c'est possible avec Irrlicht 1.6, mais est-ce possible avec 1,5 car je ne peux pas télécharger 1,6 en se moment?

Hors ligne


#1 

30-12-2009 19:29:52

Zorian
Correcteur
Date d'inscription: 12-05-2009
Messages: 19
Corrections: 181

Le problème a déjà été posé ici et résolu il me semble.
N'oublie pas "la fonction Recherche est ton amie".


Real Programmers Don't Document - If it was hard to write, it should be hard to understand.

Hors ligne


#2 

30-12-2009 20:17:13

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Oui je l'avaisdéjà vu, mais il utilise la version 1.6 et je ne peux la télécharger, je suis obliger de garder la 1.5. Donc j'aimerai savoir si il y a un moyen avec le 1.5?

Hors ligne


#3 

30-12-2009 20:25:52

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

sauf erreur de ma part, hormis la fonction getSceneNodeAndCollisionPointFromRay , les autres fonctions sont compatibles 1.5/1.6.

je ne peux la télécharger,...


Essais de le faire dès que tu peux wink


Force et sagesse...

Hors ligne


#4 

30-12-2009 21:00:09

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

J'ai donc essayer avec le code de capry (sauf que moi avec 1.5), se qui donne:

Code:

    ITriangleSelector * triangles;
    scene::ISceneNodeAnimatorCollisionResponse *collisionResponse;
    triangles = smgr->createOctTreeTriangleSelector(m_meshC,m_avatar);
    collisionResponse = smgr->createCollisionResponseAnimator(triangles, m_avatar);

   if (collisionResponse->getCollisionNode() == Balle[i])
     {
     ........
      }

Mon débugeur me met que getCollisionNode n'appartient pas a scene::ISceneNodeAnimatorCollisionResponse, pourtant dans la doc ( http://irrlicht.sourceforge.net/docu/cl … ponse.html ) ils le mettent! C'est parce que je n'est pas le 1.6?

Hors ligne


#5 

30-12-2009 22:01:07

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Kit-fisto24 :

...C'est parce que je n'est pas le 1.6?


oui.
Tu sembles avoir un accès internet, qu'est-ce qui coince pour télécharger la version 1.6 (tu passe par un tel portable ?)   ?


Force et sagesse...

Hors ligne


#6 

31-12-2009 00:00:42

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Je ne pouvais pas le télécharger car mon ordi était en réparation, et pendant ce temps j'étais sur l'ordi de mon père, mais il ne veut pas que je télécharge des trucs dessus car il se sert de son ordi pour travailler et si il avait un problème avec l'ordi du a un quelconque virus, cela pourrais l'empêcher complètement de travailler. Mais là j'ai récupérer mon ordi. Bon assez de raconter ma vie, j'ai un problème (encore ^^ ) :

C'est bon il n'y a aucun bug avec 1.6, mais comme dans l'autre topic de capry, le if de la collision n'est jamais vrai. J'ai donc fait comme TUpac a dit avec un  std::cout << collisionResponse->getCollisionNode() << ":" << Balle[i] << std::endl;.
Sauf que moi ça ne m'affiche pas pour les deux des 0x[...] mais pour le premier ( collisionResponse->getCollisionNode()  )   BAADFOOD en permanence et pour le deuxième (Balle[i])  0426[...] et les [...]change de temps en temps. Qu'est-ce que ça veut dire?

J'aurai aussi une question: ce if est utilisé dans une fonction très utilisé dans le programme (je suis entrain de faire un jeu et cette fonction est utilisé quand on tire), et donc a chaque fois ça créer des OctTreeTriangleSelector (ça me l'affiche dans la console), mais ni a-t-il pas un danger a en créer autant car par exemple que le programme se mettant a ramer ou autre?

Hors ligne


#7 

31-12-2009 15:25:04

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Salut, la technique d'afficher l'adresse de l'objet permet de vérifier que l'objet en collision est bien modifié en temps réel. Donc pour toi la collision marche bien (elle change selon le mouvement). Ca ne veut rien dire de plus, sauf que si les deux pointeurs ne sont jamais identiques c'est que la collision avec l'objet voulu n'a jamais lieu.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#8 

31-12-2009 15:56:41

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Pourtant je suis sur qu'il y a une collision entre les deux, mais mon if est jamais vrai. D'où peut venir le problème?

Hors ligne


#9 

31-12-2009 17:31:02

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

si getCollisionNode() est identique à ball[i] ta condition est forcément vrai. Mais si getColisionNode() = BAADFOOD ca ressemble bien à une grosse erreur sur ton objet collisionmanager->getColisionNode(). BAADFOOD = "mal-bouffe" ??
cherche en amont de la detection de collisions.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#10 

22-02-2010 15:36:22

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Je remonte ce topic car je n'ai toujours pas résolut le problème.

Est-ce possible que le problème viennent du faite que une deux des SceneNode soit une IAnimatedMeshSceneNode?

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
88 invités en ligne
Aucun membre connecté
RSS Feed