Bon, le titre n'est pas tres explicite, c'est vrai...
En fait, je souhaiterais pouvoir cliquer sur un objet pour s'en servir dans un jeu (Exemple : Une boite au lettres ou un coffre). Déja que je ne sais pas comment faire ça, la camera FPS pose un vrai probleme au niveau de la souris...
Comment peut on faire pour détecter un clic d'une souris sur un objet ? Et comment peut-on libérér le curseur de son emprise ?
Merci d'avance
Hors ligne
Pour le clic de la souris sur un objet je te laisse chercher sur le forum cela a été discuté mille fois, plus souvent sous le terme picking(les fonctions) et pour libérer le curseur : camera->setInputReceiverEnabled(false);
Hors ligne
Salut dark n'as pas tord. Je parcours les forum irr.fr depuis peu mais j'ai trouvé touts les éléments qu'il te faut pour ton problème.
- tu fais une ligne qui part dans la direction de la souris.
line3d<f32> line = smgr->getSceneCollisionManager()->getRayFromScreenCoordinates( device->getCursorControl()->getPosition(), device->getSceneManager()->getActiveCamera());
- tu récupère le premier node qui est sur la ligne.
ISceneNode* selectedSceneNode = smgr->getSceneCollisionManager()->getSceneNodeFromRayBB(line);
-ensuite tu n'as plus qu'a vérifier si c'est bien ta boite xD
if(selectedSceneNode == boite) player->casse_la_boite(boite);
J'espere que c'est plus clair. a+
Hors ligne
Re. A ce sujet j'ai une ptite question et je pense que ce sujet corespond:
J'ai une class perso qui utilise : getSceneNodeFromRayBB() pour recupérer le node (comme décrit au dessus). Et je n'arrive pas à récupérer un ITerrainSceneNode correctement.
J'affiche en console l'adresse du node pour vérifier et je m'aperçois que la collision du terrain est mauvaise. On dirait que la collision se fait par une box qui fait environ 1/4 de la taille du terrain.
Y'a t'il des précautions à prendre pour que les collision des terrains soit bonnes ?
Merci
Hors ligne