J'essaie de déplacer un objet en vérifiant si la souris entre en collision avec les objets rect et en vérifiant si un bouton de la souris est enfoncé.Pygame/python mouse button down
voici mon code:
class Unit(pygame.sprite.Sprite):
def __init__(self, display,):
pygame.sprite.Sprite.__init__(self,)
self.master_image = pygame.Surface((50, 100))
self.master_image.fill((000,255,000))
self.image = self.master_image
self.rect = self.image.get_rect()
self.rect.centerx = 500
self.rect.centery = 500
def move(self):
mouse = pygame.Surface((5, 5))
mouse_rect = mouse.get_rect()
(mouseX, mouseY) = pygame.mouse.get_pos()
mouse_rect.centerx = mouseX
mouse_rect.centery = mouseY
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if mouse_rect.colliderect(self.rect):
self.rect.centerx = mouseX
self.rect.centery = mouseY
print "move"
def update(self,):
self.move()
Cela fonctionne, mais je dois le spam chaque bouton sur ma souris et éventuellement Pygame ramasser l'événement de la souris et l'objet se déplacera comme prévu, mais seulement pour une fraction de seconde alors ça va s'arrêter.
Mon but est simplement de cliquer sur un bouton de la souris et si la souris entre en collision avec la boîte alors la boîte se déplacera alors que le bouton de la souris est enfoncé sur la souris x et y.
J'espère que je suis clair.
Merci pour toute aide
peace!
Voici comment je l'ai eu à travailler:
#unit sprite class
class Unit(pygame.sprite.Sprite):
def __init__(self, display,):
pygame.sprite.Sprite.__init__(self,)
self.master_image = pygame.Surface((50, 100))
self.master_image.fill((000,255,000))
self.image = self.master_image
self.rect = self.image.get_rect()
self.rect.centerx = 500
self.rect.centery = 500
#mouse stuff
self.mouse = pygame.Surface((5, 5))
self.mouse_rect = self.mouse.get_rect()
(self.mouse_rect.centerx , self.mouse_rect.centery) = pygame.mouse.get_pos()
def move(self):
if pygame.MOUSEBUTTONDOWN:#check for mouse button down
(button1, button2, button3,) = pygame.mouse.get_pressed()#get button pressed
if button1 and self.mouse_rect.colliderect(self.rect):#check for collision between object and mouse
(self.rect.centerx, self.rect.centery) = pygame.mouse.get_pos()#set object POS to mouse POS
def update(self,):
(self.mouse_rect.centerx , self.mouse_rect.centery) = pygame.mouse.get_pos()#update mouse RECT
self.move()#check movement
merci pour l'aide!
paix!
Merci, votre réponse m'a beaucoup aidé et je l'ai maintenant comme prévu. Je vais poster mon code pour les autres à voir comme un exemple. – user1473612