Pages: 1
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
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
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
Hors ligne
J'ai donc essayer avec le code de capry (sauf que moi avec 1.5), se qui donne:
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
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 ?) ?
Hors ligne
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
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.
Hors ligne
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
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.
Hors ligne
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
Pages: 1