与敌人碰撞后的弹丸问题如何解决?

时间:2020-05-30 00:31:25

标签: python pygame

我正试图使子弹与敌人碰撞然后消失,但由于某种原因,它只是通过而扔掉

    for bullet in bullets[:]:
        if bullet.y + bullet.x < enemys1.hitbox[1] + enemys1.hitbox[3] and bullet.y + bullet.x > enemys1.hitbox[1]:
            if bullet.x - bullet.y > enemys1.hitbox[0] and bullet.x - bullet.y < enemys1.hitbox[0] + enemys1.hitbox[2]:
                enemys1.hit()
                bullets.pop(bullets.index(bullet))

这是我的弹丸课


class projectile(object):
   def __init__(self, x, y, dirx, diry, color):
       self.x = x
       self.y = y
       self.dirx = dirx
       self.diry = diry
       self.slash = pygame.image.load("heart.png")
       self.rect  = self.slash.get_rect()
       self.rect.topleft = ( self.x, self.y )
       self.speed = 10
       self.color = color

   def move(self):
       self.x += self.dirx * self.speed
       self.y += self.diry * self.speed

   def draw(self, window):
       self.rect.topleft = (round(self.x), round(self.y))

       window.blit(slash, self.rect)


感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

我建议对命中框使用pygame.Rect对象,并为colliderect()使用交点:

for bullet in bullets[:]:
    hit_rect = pygame.Rect(*enemys1.hitbox)
    if bullet.rect.colliderect(hit_rect):
        enemys1.hit()