Skip to main content
 首页 » 编程设计

python之组中对象之间的 Pygame 碰撞检测

2025年05月04日10TianFang

我正在制作一个简单的游戏,我基本上有一个僵尸类,我将其放在一个组中,这样我就可以无限期地拥有它的多个实例:

class zombie(pygame.sprite.Sprite): 
    def __init__(self): 
        pygame.sprite.Sprite.__init__(self,zombiegroup) 
        self.pos=(random.randrange(5,695),random.randrange(5,455)) 
        self.image=zombie_image 
        self.rimage=self.image 
        self.rect=self.image.get_rect().move(self.pos) 
        self.speed=5 
 
 
    def update(self): 
        zx=self.rect.topleft[0]-player.rect[0] 
        zy=self.rect.topleft[1]-player.rect[1] 
        rads=math.atan2(-zy, zx) 
        rads %= 2*pi 
        angle = math.degrees(rads) 
        self.rimage=pygame.transform.rotate(self.image, angle-90) 
        size=self.rimage.get_size() 
 
        if player.rect[0]<self.rect[0]: 
            self.rect[0]-=self.speed 
 
        if player.rect[0]>self.rect[0]: 
            self.rect[0]+=self.speed 
 
        if player.rect[1]<self.rect[1]: 
            self.rect[1]-=self.speed 
 
        if player.rect[1]>self.rect[1]: 
            self.rect[1]+=self.speed 
 
 
        screen.blit(self.rimage, (self.rect.topleft[0]-size[0]/2,self.rect.topleft[1]-size[1]/2)) 

我的小组是:

zombiegroup=pygame.sprite.Group() 

这很基本,但我想知道如何测试这些僵尸是否相互碰撞,否则在追逐一段时间后它们会在屏幕上合并为一个僵尸。我只是不知道如何处理组来做到这一点,或者即使我应该使用 pygame 组。

谢谢大家,

亚历克斯

请您参考如下方法:

最快但肮脏的方法是跟踪比僵尸本身略小的矩形并检查它们是否发生碰撞。逐像素检查会对 FPS 造成巨大影响。