我正在创造一个游戏,其中两个玩家互相开火,试图杀死另一个玩家。我当前的系统使用子弹飞向目标,一旦它撞到地面,就会产生爆炸精灵,随着时间的推移会扩展。我目前有一个问题,即膨胀的爆炸精灵在它实际到达油箱之前会与油箱碰撞。这是一个问题,因为我希望根据爆炸精灵离开坦克的距离来减少伤害。 这是我目前的代码:
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)
答案 0 :(得分:1)
pygame.sprite.spritecollide
使用两个精灵的rect
来确定碰撞。即使图形另有说明,两个矩形很可能重叠。您可以考虑使用较小的rect
精灵表示或使用
pygame.sprite.collide_circle(left, right)
可以提供帮助。