Pages: 1
Salut,
Dans mon programme, j'aurai besoin de testé la collision entre une ligne et un terrain. J'utilise donc la fonction getCollisionPoint. Mais celle-ci ne me renvoi jamais true.
Voici mon code:
core::line3d<f32> ray; ray.start = posCam; ray.end = posCam; ray.end.Y = ray.start.Y - hauteurCam; core::vector3df intersection; core::triangle3df hitTriangle; scene::ISceneCollisionManager* collMan = smgr->getSceneCollisionManager(); const irr::scene::ISceneNode* nodeCol = 0; scene::ITriangleSelector* Selector = 0; Selector = smgr->createTriangleSelector(terrain->getMesh(), terrain); terrain->setTriangleSelector(Selector); if (collMan->getCollisionPoint(ray, Selector,intersection,hitTriangle,nodeCol)) { tombe= false; }
Savez-vous pourquoi la fonction ne détecte aucune collision?
Hors ligne
je penserais a ray.end.y qui n'est pas assez bas dans l'espace. essaye ça pour voir:
et redis si ça roule ou pas
Dernière modification par nabouill (24-05-2010 14:07:21)
Hors ligne
ça vient peut-être de ton Selector. Voici un petit bout de code que j'ai utilisé qui marchait très bien, il correspond je pense exactement a ce que tu veut faire.
ps: ceci me servait d'un un test de jeu FPS quand je tirais avec un flingue, donc cette ligne s'étend droit devant. en bricolant un peut les positions tu devrais pouvoir arrivé à tes fin.
Bon courage
Dernière modification par nabouill (24-05-2010 15:15:57)
Hors ligne
Ça marche, le problème venait donc bien du selector! Merci beaucoup!
Hors ligne
Pages: 1