2017-05-20 2 views
1

So einen collide_mask Scheck Ich renne, eine Mob-Instanz auf Kollision mit dem Spieler Sprit löschen .. Es funktioniert gut.Sprite Kollision

pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask) 

Was ich mit einer harten Zeit, macht die Explosion Animation treten an der spezifischen ‚Mob in‚Monster‘‘ Lage.

minuspoints = pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask) 
    for hit in minuspoints: 
     life-=5 
     score+=1 
     if cash-1>=0: 
      cash-=1 
     else: 
      life-=5 
     enemies-=1 
     if moo==0: 
      collision.play() 
      ensmallpop.play() 

     # Check which mob was hit 
     for m in mobs: 
      pass 

#popAnim 
     popco = m.update(pos) 

Wie kann ich feststellen, welcher Mob getroffen wurde?

Ich habe 1700 Zeilen Code (vielleicht auch nicht effektiv geschrieben), so ich an dieser Stelle schon einige verschiedenen Abschnitte in meinem Kopf bin Jonglieren zu entscheiden, wie dies funktionieren würde.

Wenn Sie zusätzliche Informationen benötigen, wenden Sie sich bitte!

Vielen Dank im Voraus.

Antwort

2

Die minuspoints Liste enthält die Mobs, die mit der player kollidierten, so dass Sie einfach die Explosionsanimation unter der hit.rect.center Position abspielen können. Ich würde empfehlen, die Variablennamen minuspoints und hit zu etwas wie collided_mobs und mob zu ändern.

collided_mobs = pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask) 
for mob in collided_mobs: 
    explosion_position = mob.rect.center 
    # Now create the explosion at `explosion_position`. 
+0

Schön, das hat den Job gemacht. Vielen Dank! – TheJack