我可以在不使用 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
的参数是单个矩形,该方法测试两个矩形是否重叠。
我正在尝试制作一个小型的无尽奔跑者并且已经完成了大部分工作,唯一剩下的就是碰撞检测。 我知道 () 函数,但无法让它工作。我可能只是做错了,但我不知道如何解决它。
现在我有一个播放器 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
的参数是单个矩形,该方法测试两个矩形是否重叠。