【问题标题】:Can I use the .colliderect() without using Sprites? -PyGame我可以在不使用 Sprites 的情况下使用 .colliderect() 吗? -Py游戏
【发布时间】:2019-03-02 16:41:40
【问题描述】:

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

现在我有一个像这样的 Player 类:

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 键的 dict。

我现在知道我可以并且也许应该使用精灵,但我不想重做其他所有事情,所以如果你知道解决方法或者只是注意到我犯了一个愚蠢的错误,请告诉我

【问题讨论】:

    标签: python pygame collision-detection


    【解决方案1】:

    您收到错误消息

    参数必须是带有 rectstyle 键的 dict。

    因为你使用了错误的方法。

    如果要测试两个矩形是否相交,则必须使用方法pygame.Rect.colliderect 而不是pygame.Rect.collidedict

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      相关资源
      最近更新 更多