#0 

24-05-2010 13:17:40

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

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:

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


#1 

24-05-2010 14:06:15

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

je penserais a ray.end.y qui n'est pas assez bas dans l'espace. essaye ça pour voir:

Code c++ :

ray.end.Y = ray.start.Y - hauteurCam - 100;


et redis si ça roule ou pas

Dernière modification par nabouill (24-05-2010 14:07:21)


mes sites: www.manga-vf.fr et www.series-vf.fr

Hors ligne


#2 

24-05-2010 14:30:43

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

Ça ne change rien.

Hors ligne


#3 

24-05-2010 15:14:41

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

ç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.

Code c++ :


vector3df start = myCamera->getPosition();// on defini un point de depart
vector3df end = (myCamera->getTarget() - start);// et un point d'arrive
end.normalize();
start += end*8.0f;
end = start + (end * myCamera->getFarValue());
line3d<f32> line(start, end);

triangle3df triangl;
scene::ITriangleSelector* Selector = 0;
Selector = smgr->createTerrainTriangleSelector((scene::ITerrainSceneNode*)node);
const ISceneNode* hitNode;

if(sceneMgr->getSceneCollisionManager()->getCollisionPoint(line, Selector, end, triangl,hitNode))
{
       //ça marche
}



Bon courage

Dernière modification par nabouill (24-05-2010 15:15:57)


mes sites: www.manga-vf.fr et www.series-vf.fr

Hors ligne


#4 

24-05-2010 15:41:15

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

Ça marche, le problème venait donc bien du selector! Merci beaucoup!

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
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
64 invités en ligne
Aucun membre connecté
RSS Feed