我正在尝试做一个小型的无尽奔跑者,并完成大部分工作,剩下的唯一事情就是碰撞检测。 我知道()函数,但无法正常工作。我可能做错了,但是我不知道如何解决它。
现在我有一个像这样的播放器类:
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)
根据Player类
但是随后我遇到一个类型错误:
参数必须是带有rectstyle键的字典。
我现在知道我可以并且也许应该使用精灵,但是我不想重做其他所有事情,因此,如果您知道解决方法或者只是发现我犯了一个愚蠢的错误,请告诉我
答案 0 :(得分:3)
您收到错误消息
参数必须是带有rectstyle键的字典。
因为使用的方法错误。
如果要测试2个矩形是否相交,则必须使用方法pygame.Rect.colliderect
而不是pygame.Rect.collidedict
:
return self.rect.collidedict(obstacles[0].rect)
return self.rect.colliderect(obstacles[0].rect)
collidedict
的参数必须是字典。该方法将测试字典中的矩形之一是否相交。
colliderect
的参数是一个矩形,该方法测试两个矩形是否重叠。