2017-08-20 2 views
1

En cas de collision, existe-t-il un moyen d'obtenir les deux objets?Comment obtenir les deux objets d'image-objet en collision dans pygame?

Par exemple:

allSprite = pygame.sprite.Group() 
Bullets = pygame.sprite.Group() 
Enemies = pygame.sprite.Group() 

bullet = Bullet() 
enemy = Enemy() 
Bullets.add(bullet) 
Enemies.add(enemy) 

hits = pygame.sprite.collide(Enemies,Bullets) 
for hit in hits: 
    hit.damage() 

Cela n'obtient l'objet Enemy, mais je veux les deux objets parce que je dois les dégâts de balles aussi.

Répondre

1

Vous pouvez utiliser la fonction groupcollide pour cela: http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.groupcollide

Vous récupérerez un dictionnaire d'ennemis (clés) et pour chaque ennemi, une liste des balles qui le frappent (valeurs). Alors vous pouvez faire quelque chose comme ceci:

hits = pygame.sprite.groupcollide(Enemies, Bullets, False, True) 
for enemy in hits: 
    for bullet in hits[enemy]: 
     enemy.damage(bullet.damage) 
+0

Thatnks beaucoup bro. – Knight