Pygame扩展精灵有碰撞问题

时间:2018-03-16 19:21:07

标签: python pygame sprite

我正在创造一个游戏,其中两个玩家互相开火,试图杀死另一个玩家。我当前的系统使用子弹飞向目标,一旦它撞到地面,就会产生爆炸精灵,随着时间的推移会扩展。我目前有一个问题,即膨胀的爆炸精灵在它实际到达油箱之前会与油箱碰撞。这是一个问题,因为我希望根据爆炸精灵离开坦克的距离来减少伤害。 这是我目前的代码:

def explode(self, x, y, alive):
    explosionList.add(self)
    explosionList.draw(gameDisplay)
    self.rect.center = x, y
    damage = 100
    collideTank = pygame.sprite.spritecollide(self, tankList, False)
    tank = False
    for i in range(20):
        damage -= 5
        time.sleep(0.01)
        if len(collideTank) > 0 and tank == False:
            tank = True
            collideTank[0].damageTank(alive, damage)
        self.image = explosionImage
        self.image = pygame.transform.scale(self.image, ((i + 1) * 3, (i + 1) * 3))
        self.rect = self.image.get_rect(center = self.rect.center)
        explosionList.clear(gameDisplay, background)
        explosionList.draw(gameDisplay)
        pygame.display.update()
    explosionList.clear(gameDisplay, background)

1 个答案:

答案 0 :(得分:1)

pygame.sprite.spritecollide

使用两个精灵的rect来确定碰撞。即使图形另有说明,两个矩形很可能重叠。您可以考虑使用较小的rect精灵表示或使用

pygame.sprite.collide_circle(left, right)

可以提供帮助。