错误pygame:参数必须是rectstyle对象的序列

问题描述

嗨,我正在尝试使用pygame制作一个简单的2D汽车游戏,并且试图在两辆汽车之间添加碰撞,但是我一直遇到此错误

Traceback (most recent call last):
  File "C:\Users\emilio pinto\Desktop\Running car proj\Running car.py",line 69,in <module>
    if pygame.Rect.collidelist(car1,car2) >= 0:
TypeError: Argument must be a sequence of rectstyle objects.

我非常确定我一直都在使用.Rect模块,无论如何,这些是变量以及我如何使用它们:


car1=pygame.Rect((xCar,yCar),(60,30))
car2=pygame.Rect((xCar2,yCar2),30))

    if pygame.Rect.collidelist(car1,car2) >= 0:
        running=False
        screen.fill((0,0))
        screen.blit(loseText,(142,90))
        screen.blit(loseText2,(110,170))
        pygame.display.flip()
        if keys[pygame.K_SPACE]:
            running=True
            continue

解决方法

这应该可以解决您的问题:

if pygame.Rect.colliderect(car1,car2) >= 0:

说明:

您使用了错误的函数或该函数的错误参数。

对两个对象使用Rect.colliderecthttps://www.pygame.org/docs/ref/rect.html#pygame.Rect.colliderect

或将Rect.collidelist用于对象列表。因此,必须将car1car2放在列表对象中。 https://www.pygame.org/docs/ref/rect.html#pygame.Rect.collidelist