2017-05-28 3 views
1

J'implémente les commandes du joystick dans mon jeu Allegro 5 dans Visual Studio 2017. J'ai essayé de le faire de deux façons: en faisant en sorte que ma file d'attente écoute les événements de joystick dans ma boucle principale, et en ayant une mise à jour ALLEGRO_JOYSTICK_STATE une fois par image dans ma boucle principale avec l'état actuel du joystick. Cependant, en regardant la valeur pos du joystick, je trouve que dans les deux cas, il ne retourne pas réellement les positions x et y à 0.0 lorsque le manche revient au neutre, mais plutôt à des valeurs très faibles comme 0.01 ou 0.02. Pour la plupart, cela ne cause pas de problèmes, mais occasionnellement, mon lecteur continuera à se déplacer très lentement, même lorsque le joystick est au neutre, car les valeurs pos sont trop élevées.Allegro 5: Vérifie si le joystick est "neutre"

Existe-t-il un moyen fiable de vérifier si le joystick est enfoncé ou non? J'ai d'abord pensé à "réinitialiser" la position à 0.0, 0.0 chaque image et ensuite seulement la changer si le mouvement du joystick était détecté, mais la file d'attente des événements ne détecte pas réellement le mouvement à chaque image, même lorsque le joystick "bégaie" en se déplaçant. Puisque les valeurs «neutres» sont très faibles, j'ai aussi pensé à vérifier si elles étaient inférieures à une certaine valeur et à considérer le bâton «neutre» si elles l'étaient, mais cela semble très peu fiable étant donné que je vois des chiffres différents joystick et je ne sais pas à quelle hauteur ils peuvent aller.

+0

Le problème peut bien sûr être avec votre joystick. Essayez de le recalibrer. Une solution paresseuse consisterait à limiter vos valeurs pour obtenir des positions proches du neutre, mais cela pourrait affecter le gameplay. – Rook

Répondre

1

Les valeurs varient de -1,0 à 1,0. Vous voudrez peut-être avoir une "zone morte" où toute valeur inférieure à, disons, 0,05 est traitée comme 0. Finalement, vous pourriez laisser les joueurs configurer cela.

L'utilisation d'événements est préférable à l'interrogation car vous évitez le risque de manquer des événements entre les sondages.

+0

Merci. J'utilise 0.05 comme zone morte et cela semble fonctionner normalement. Je peux également le rendre configurable comme vous l'avez suggéré. – user3726962