如何知道我的一个子弹精灵是否与我的 enemy/boulder 精灵碰撞? - pygame

How to know if one of my bullet sprites collided with my enemy/boulder sprite? - pygame

我有一款游戏,玩家可以向所有 4 个方向发射子弹。当我的任何一个子弹精灵碰到它时,我想删除我的 boulder/enemy 精灵。我该怎么做?

相关代码-

子弹精灵:

class Bullet(pygame.sprite.Sprite):

    def __init__(self, bulletdir1):
        super().__init__()
        self.bulletdir = bulletdir1
        self.image = pygame.Surface((30, 10))
        self.image.fill((195, 222, 18))
        if self.bulletdir == "N" or self.bulletdir == "S":
            self.image = pygame.transform.rotate(self.image, 90)
        else:
            pass
        self.rect = self.image.get_rect(
            center=(playerpos.x + 53, playerpos.y + 27))

    def update(self):
        if self.bulletdir == "N":
            self.rect.y -= 10
        if self.bulletdir == "S":
            self.rect.y += 10
        if self.bulletdir == "W":
            self.rect.x -= 10
        if self.bulletdir == "E":
            self.rect.x += 10
        if self.rect.y <= 0 or self.rect.y >= 600 or self.rect.x <= 0 or self.rect.x >= 998:
            self.kill()

巨石精灵:

class Boulder(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image= pygame.image.load("PS/boulder.png")
        self.rect= self.image.get_rect(center=(100,100))
        if self.rect.colliderect()
boulder_grp.add(Boulder())

截至目前,我的屏幕上只有一个静止的巨石,当按下特定键时,子弹精灵 called/made

你有一个boulder_grp,我假设你有一个bullet_grp。使用 pygame.sprite.groupcollide 并设置 dokill1dokill2 属性来销毁 (_kill) 对象:

您只需拨打 pygame.sprite.groupcollide:

pygame.sprite.groupcollide(boulder_grp, bullet_grp, True, True)

另见 How do I detect collision in pygame? and