#0 

12-09-2009 22:02:26

Ma77hTheG33k
Membre
Date d'inscription: 31-08-2009
Messages: 13

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


#1 

13-09-2009 15:09:40

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

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


#2 

15-09-2009 20:14:53

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

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.

Code:

line3d<f32> line = smgr->getSceneCollisionManager()->getRayFromScreenCoordinates( device->getCursorControl()->getPosition(), device->getSceneManager()->getActiveCamera());

- tu récupère le premier node qui est sur la ligne.

Code:

ISceneNode* selectedSceneNode = smgr->getSceneCollisionManager()->getSceneNodeFromRayBB(line);

-ensuite tu n'as plus qu'a vérifier si c'est bien ta boite xD

Code:

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


#3 

16-09-2009 13:33:58

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
15 invités en ligne
Aucun membre connecté
RSS Feed