Pygame 用于碰撞检测的自定义矩形

Pygame Custom rect for collision detection

我已经设法使用 sprite collide 让玩家与另一个 sprite 发生碰撞并且效果很好。

然而,spritecollide 函数只允许它(至少据我所知)与名为 self.rect

的矩形发生碰撞

我有一个名为 self.hitbox 的自定义矩形,我希望我的玩家与之发生碰撞,因为碰撞框矩形与内置矩形本身的大小不同

这是我与 self.rect

碰撞的代码
def collide_blocks(self, direction):

    hits = pygame.sprite.spritecollide(self, self.game.block_objects, False)
          
    if hits:
        for i in hits:
            if direction == "x":
              if self.x_change > 0:
                self.rect.x = i.rect.left - self.rect.width
              if self.x_change < 0:
                self.rect.x = i.rect.right 
            if direction == "y":
              if self.y_change > 0:
                self.rect.y = i.rect.top - self.rect.height 
              if self.y_change < 0:
                self.rect.y = i.rect.bottom

如何调整我的代码以使其与 i.hitbox 而不是 i.rect 发生碰撞(我 = 精灵发生碰撞)

pygame.sprite.spritecollide 的第 4 个参数可以是用户定义的回调函数,用于计算两个精灵是否发生碰撞:

def hitbox_collide(sprite1, sprite2):
    return sprite1.hitbox.colliderect(sprite2.hitbox)
hits = pygame.sprite.spritecollide(self, self.game.block_objects, False, hitbox_collide)