我可以在不使用 Sprites 的情况下使用 .colliderect() 吗? -PyGame

Can I use the .colliderect() without using Sprites? -PyGame

我正在尝试制作一个小型的无尽奔跑者并且已经完成了大部分工作,唯一剩下的就是碰撞检测。 我知道 () 函数,但无法让它工作。我可能只是做错了,但我不知道如何解决它。

现在我有一个播放器 Class 是这样的:

class Player:
def __init__(self):
    self.size = (20, 40)
    self.color = white
    self.pos = [200, 330]
    self.shape_body = (self.pos, self.size)
    self.rect = pygame.Rect(self.shape_body)

还有障碍物

class obstacle_ground1:

def __init__(self):
    self.pos = [1000, 330]
    self.size = (40, 40)
    self.shape = (self.pos, self.size)
    self.rect = pygame.Rect(self.shape)
    self.color = white

(我有不同的,所以有一个1) 所有障碍都在一个列表中,我想检查这样的碰撞

def Check_if_dead(self):
    return self.rect.collidedict(obstacles[0].rect)

作为玩家的功能class

但是我得到了一个类型错误:

Argument must be a dict with rectstyle keys.

我现在知道我可以而且也许应该使用 sprite,但我不想重做其他所有内容,所以如果您知道解决方法或只是注意到我犯的一个愚蠢错误,请告诉我

您收到错误消息

Argument must be a dict with rectstyle keys.

因为你用错了方法。

如果你想测试2个矩形是否相交,那么你必须使用方法pygame.Rect.colliderect rather then pygame.Rect.collidedict:

return self.rect.collidedict(obstacles[0].rect)

return self.rect.colliderect(obstacles[0].rect)

collidedict 的参数必须是字典。该方法将测试字典中的矩形之一是否相交。
colliderect 的参数是单个矩形,该方法测试两个矩形是否重叠。