代码之家  ›  专栏  ›  技术社区  ›  Knight

如何在pygame中获得两个碰撞的精灵对象?

  •  1
  • Knight  · 技术社区  · 8 年前

    如果发生碰撞,是否有方法获取两个对象?

    例如:

    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()
    

    Enemy 物体,但我想要两个物体,因为我也需要子弹伤害。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Chris    8 年前

    您可以使用 groupcollide http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.groupcollide

    你会得到一个敌人字典(键),每个敌人,一个击中它的子弹列表(值)。然后你可以这样做:

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