#1 

12-09-2009 20:02:26

Ma77hTheG33k
Membres
Date d'inscription:
Messages: 13
IP: 90.61.42.191
Courriel

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 tongue ?
Merci d'avance


Hors ligne


#2 

13-09-2009 13:09:40

dark calculator
Membres
Date d'inscription:
Messages: 153
IP: 88.178.191.172
Courriel

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


#3 

15-09-2009 18:14:53

TUpac
Membres
Avatar de TUpac
Date d'inscription:
Messages: 387
IP: 88.168.3.38
Courriel

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+


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

Hors ligne


#4 

16-09-2009 11:33:58

TUpac
Membres
Avatar de TUpac
Date d'inscription:
Messages: 387
IP: 88.168.3.38
Courriel

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


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

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
119 invités en ligne
membre en ligne: -
RSS Feed