Bonjour,
j'essaye de déplacer un objet de façon fluide à l'aide du clavier ( j'appuie sur 'z' et mon objet avance...).
Avant j'utilisais glutKeyboardFunc(), et donc dès que j'enfonçais la touche 'z' je jouais avec les incréménents de différentes variables.
Le problème est que quand on utilise cette technique, l'objet bouge une fois, s'arrete 1/3 de seconde, puis avance de façon s'accadée ( comme quand on reste appuyé sur une touche dans un éditeur de texte ).
J'ai lu sur le net qu'une solution est d'utiliser glutKeyboardUpFunc(), ainsi j'aurais fais quelquechose comme :
void enfoncerTouche( unsigned char touche, int x, int y){
et donc quand 'z' = true dans une autre fonction je modifie ce qu'il faut pour faire avancer mon objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 switch( touche ){ case 'z' : avancer = true ; break ; case 'q' : reculer = true ; break ; case 'q' : tournerGauche = true ; break ; case 'd' : tournerDroite = true ; } }
Cependant j'ai deux problèmes :
-Comment remettre mes valeur à false ? existe-il une fonction glutKeyboardDownFunc() ?
-Je ne vois pas trop quand je pourrais faire appel à ma méthode "changeDirection" pour mettre à jour les données, car je suppose que tant qu'on reste appuyer sur l'une de ses touches on reste dans la fonction "enfoncerTouche".
Partager