Снаряды после столкновения с врагом Проблема Как исправить? - PullRequest
2 голосов
/ 30 мая 2020

Я пытаюсь заставить мои пули столкнуться с моим врагом, а затем исчезнуть, но он просто проходит мимо них по какой-то причине

    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 Ответ

2 голосов
/ 30 мая 2020

Я рекомендую использовать объект pygame.Rect для хитбокса и colliderect(), чтобы найти пересечение:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...