Gérer la souris comme dans Doom 3

Résolu
vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008 - 4 janv. 2005 à 21:04
vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008 - 6 janv. 2005 à 10:06
Bonjour,

Je développe avec glut sous VC++ 6.

Comme indiquer dans le titre j'aimerai pour voir gérer la souris comme dans doom 3. J'explique:



Dans Doom 3 on pivote en bougeant la souris à droite
où à gauche. Mais il n'y a pas de limite. Si par exemple, on
bouge la souris de un metre vers la droite le perso fera plusieur tours
sur lui meme. On dirait que le jeu ne s'occupe que du déplacement relatif de la souris.

Alors que moi, dans mon programme, quand la souris atteint le bord de l'écran je suis coincé. Je n'arrive en effet qu'à récupérer les coordonnées de la souris (glutMouseFunc(souris))



J'ai essayé de repositionner le curseur avec SetCurorPos inclu dans <winuser.h> mais ça ne marche pas.

Si quelqu'un a une idée

Merci

4 réponses

vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008
6 janv. 2005 à 10:06
Si si ça marche, très bien même. Je me déplace maintenant comme dans Doom .

Dans le main
glutPassiveMotionFunc(mouvementPassif); //déplacement avec bouton laché
glutDisplayFunc ( Draw );

void mouvementPassif(int x,int y){


//Pour l'instant la caméra à tjs la mm position relative au joueur
if (x > fenetre.centreX ) sourisMvtHori = DROITE;
else if (x < fenetre.centreX) sourisMvtHori = GAUCHE;

if (y > fenetre.centreY ) sourisMvtVerti = BAS;
else if (y < fenetre.centreY ) sourisMvtVerti = HAUT;

glutPassiveMotionFunc(NULL);
glutWarpPointer(fenetre.centreX, fenetre.centreY);
}

Dans la fonction Draw qui ne fait rien (sauf glutPostRedisplay ( ))
s'il n'est pas l'heure d'afficher la frame suivante

...
else if (sourisMvtVerti == HAUT){
laCamera.pivoteConstHautTemps(temps.ecoule);
}
sourisMvtHori = 0;
sourisMvtVerti = 0;
glutPassiveMotionFunc(mouvementPassif); //déplacement avec bouton laché
//glutLookAt avec laCamera
//affichage des objets

Bon c'est pas tout maintenant, i lfaut que je m'attaque aux colisions!
3
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
4 janv. 2005 à 22:22
Juste un conseil, t'en fais ce que tu veux : personnellement je préfère
la librairie GLFW (http://glfw.sourceforge.net) à GLUT, car elle est +
complète, et contient entre-autres une fonctions glfwSetCursorPos()
(chuis plus sûr du nom mais je sais qu'elle existe).

Enfin dans ton cas de toutes façons SetCursorPos() devrait fonctionner qd même...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008
5 janv. 2005 à 10:25
Merci du conseil mais comme j'ai commencé sous GLUT j'y reste.GLFW sera peut être pour une prochaine fois

En fait j'ai trouvé entre temps la réponse : glutWarpPointer(x,y) qui position la souris en (x,y) de la fenetre glut. Contrairement à SetCursorPos qui utillise les coordonnées écran.
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
5 janv. 2005 à 21:56
juste une petite info sur glut : ne gérant pas le déplcement relatif de
la souris, l'utilisation de gluWarpPointer au centre de l'écran ne
marche pas bien(enfin la dernière fois que j'ai essayé il y a 2
semaines c'était pas efficace) donc si tu y arrives bien dis moi
comment tu fais !

A m a u r y
0
Rejoignez-nous