Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame] Problème avec le stick

Sujet résolu
    15 novembre 2014 à 22:18:35

    Bonsoir ! :)

    Je crée en ce moment un jeu de plateformes en 2D sur Pygame et je me heurte à un problème avec le joystick. J'utilise la méthode suivante pour gérer mes déplacements :

    for event in pygame.event.get():
    	if event.type == JOYAXISMOTION:
    		if event.axis == 0 and event.value > 0:
    			perso.move(perso.vitesse, 0)

    Malheureusement si je laisse le joystick enfoncé dans une direction, le personnage ne se déplace qu'une fois puis arrête de bouger, l'input n'est pas réalisé en continu. Voilà donc mon problème, j'aimerais que mon personnage se déplace en continu et je ne sais pas comment faire. Pour les contrôles au clavier j'utilise cette méthode qui marche très bien :

    key = pygame.key.get_pressed()
    	if key[pygame.K_a or pygame.K_A or pygame.K_LEFT]:
    		perso.move(-perso.vitesse, 0)

    Je n'ai pas trouvé d'équivalent avec le joystick. Merci d'avance, et bonne soirée à vous ! :)


    • Partager sur Facebook
    • Partager sur Twitter
    "The best thing about now, is that there's another one tomorrow."
      15 novembre 2014 à 22:44:37

      Salut,

      Ça fait un bail que je n'ai pas utilisé pygame, mais voici ce que j'ai mis dans mon wiki personnel:

      #Pour continuer les actions quand on maintien une touche, on utilise la méthode
      #set_repeat() du module key.
      pygame.key.set_repeat(délai, intervalle)
      
      #Le délai correspond au temps entre l'action quand on appuie sur la touche et la
      #première répétition.
      #L'intervalle correspond au temps entre chaque répétition
      
      #ATTENTION: Cette méthode doit être placé avant la boucle. En fait ce n'est
      #qu'un paramètre, donc on peut même le mettre au début



      En espérant que ça te soit utile. Je ne pourrai pas t'aider plus :o

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        15 novembre 2014 à 22:48:06

        Merci pour ta réponse mais je viens de trouver mon bonheur sur un site anglais. Si ça peut aider des gens qui vont lire ce forums, j'ai utilisé cette méthode :

        axis = pygame.joystick.Joystick(0).get_axis(0)
        	if axis > 0.5:
        		perso.move(perso.vit, 0)
        	if axis < -0.5:
        		perso.move(-perso.vit, 0)

        Cela permet de vérifier la position du joystick sur l'axe des abscisses. Ainsi à chaque frame, cette condition est vérifiée contrairement au event.get() qui attend qu'on relâche le bouton.

        Bonne soirée ! :)

        • Partager sur Facebook
        • Partager sur Twitter
        "The best thing about now, is that there's another one tomorrow."
          15 novembre 2014 à 22:49:43

          Le perso avance tant que le joystick n'est pas revenu en position neutre. Ça fait intervenir une variable. 

          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

          [Pygame] Problème avec le stick

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown