Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame] Collision

Comment puis-je faire ?

    21 juillet 2011 à 16:42:14

    Salut,

    Je suis en train de programmer un petit jeu pour l'instant tout va bien :D
    Sauf que j'arrive à la gestion des collisions sauf que je sais pas trop comment faire sachant que j'utilise une image de collision(Transparent -> pas de collision, Couleur -> collision), seul problème je sais pas comment gérer cela sachant que le système de collision inclut dans pygame s'appuie sur les Rect, or mon image de collision fait toute la fenetre donc dès que mon sprite se situe dans cette surface(transparente ou non), pygame me détecte une collision :o

    Je voudrais savoir comment je pourrais faire ne pas avoir de collision quand mon sprite se trouve dans une zone transparente de l'image, et une collision dès qu'elle touche une zone remplis.

    J'ai vu sur le google le pixel perfect mais sa me semble un peu lourd à mettre en place o_O

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 juillet 2011 à 17:18:40

      Tu peux utiliser cette fonction pygame pygame.sprite.collide_rect si ça te retourne True, c'est à toi de lui faire comprendre qu'il ne se passe rien sur cette surface.
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2011 à 17:27:21

        J'avais vu cette fonction mais le problème c'est que mon jeu n'est pas orienté objet or d'après mes recherche elle s'utilise avec des classes et des méthodes :( . Et mes images sont pas définis comme des sprites...
        • Partager sur Facebook
        • Partager sur Twitter
          21 juillet 2011 à 23:46:28

          utilises mask.overlap()
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            22 juillet 2011 à 0:34:22

            Merci je vais regardé ça demain :)

            J'ai un petit problème avec l'utilisation overlap je vois pas trop à quoi correspond le offset :(

            Voilà mon code:

            masktank = pygame.mask.from_surface(tankj1_base)
            maskcollide = pygame.mask.from_surface(collide)
            		
            		
            if masktank.overlap(maskcollide,(xbasej1,ybasej1)):
            	print("Collision")
            


            Mais avec ceci il me met :
            if masktank.overlap(maskcollide,(xbasej1,ybasej1)):
            TypeError: integer argument expected, got fload


            Merci de votre aide
            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2011 à 23:24:54

              offset c'est la position relative, genre ...
              le tank se trouve à (103,217) et l'obstacle à (108,223), l'offset c'est (108-103,223-217) soit (5,6)
              ou (-5,-6) selon lequel du tank ou de l'obstacle est l'argument.
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                23 juillet 2011 à 17:35:27

                MAis le problème c'est que ma map de collision à pour coordonner (0,0) et donc je sais pas trop comment pygame va gerer l fait qu'il est des zone opaque ou non sur cette surface.

                Le mieux je pense est que je trouve une autre façon de generer cette map de collision voir la map entière. :o
                • Partager sur Facebook
                • Partager sur Twitter

                [Pygame] Collision

                × 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