PDA

Voir la version complète : Joystick(s) fou(s)


amak
15/09/2005, 00h37
Bonjour à tous,

J'ai un petit problème avec la gestion des joysticks dans mon applie.
Il se passe un truc bizarre lors du premier appui sur une des flèches de direction.
Lorsque j'appuie sur une direction et que je relache, je ne passe pas par le centre mais je passe directement sur l'axe opposé. Je reste bloqué sur cet axe tant que je n'ai pas appuyé dessus et à ce moment je reçoit à la suite la direction de mon axe et le centre. Au démarrage je dois donc faire, haut/centre bas/centre gauche/centre droite/centre pour pouvoir utiliser correctement le joystick par la suite.
Un petit exemple pour clarifier les choses:
Moi | Joystick
-----------+-----------
haut | haut
centre | bas
bas | bas
| centre
centre | centre
bas | bas
centre | centre
J'ai le même type comportement sur les deux axes quelque soit celui par lequel je commence ainsi qu'avec plusieurs joysticks, je pense donc que c'est normal (une sorte de calibrage peut-être) mais je m'en passerai bien ...
Est-ce que quelqu'un aurait déjà rencontré ce problème et aurait une solution pour y remédier ?

Mokona
15/09/2005, 07h15
Voici ce qui se passe pour les miens (deux fois le même comportement, je suppose donc que c'est peut-être général) : les joysticks sont rarement en positiion complètement neutres (à zéro). Ils trainent autour de zéro.

Il faut donc leur laisser une "marge" (assez grande d'ailleurs pour moi).

amak
15/09/2005, 19h18
C'est déjà ce que je fais. Je n'ai pas de problème au niveau des déplacements ça marche super. C'est uniquement lors du premier appuis sur chacuns des axes que j'ai le problème, ensuite ça roule.
Merci quand même pour ton aide :)

SagaEterna
16/09/2005, 10h19
si c'est bien un joystick autocalibrant (cela ne doit pas etre dans le dico ça ;)) cela veut dire qu'il se calibre lors des premiers mouvements, d'où les resultats etranges que tu obtiens

essaye de les calibrer avant de lancer ton application, pour voir si cela change quelque chose.

Par contre j'en profite pour poser une question :00000026:
Y a t'il une manière simple de determiné la zone morte du joystick avec SDL, pour que cela fonctionne le plus universelement possible?

amak
16/09/2005, 20h50
Ah oui merci je n'y avais pas pensé.

Concernant ta question, en faisant simplement un SDL_JoystickGetAxis juste après le SDL_JoystickOpen et avant le SDL_JoystickEventState(SDL_ENABLE) tu dois avoir la valeur mini par contre pour le maxi je ne vois pas (du moins sans intervention humaine) à moins qu'ils aillent tous jusqu'à 32767/-32768.