我正试图使子弹与敌人碰撞然后消失,但由于某种原因,它只是通过而扔掉
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)
感谢任何帮助,谢谢!
答案 0 :(得分:2)
我建议对命中框使用pygame.Rect
对象,并为colliderect()
使用交点:
for bullet in bullets[:]:
hit_rect = pygame.Rect(*enemys1.hitbox)
if bullet.rect.colliderect(hit_rect):
enemys1.hit()