TypeError: Invalid rect assignment

TypeError: Invalid rect assignment

我正在尝试制作游戏,但我一直 运行 进入错误 Invalid Rect Assignment。我不知道为什么,也不知道发生了什么。

代码如下:

class Tile(pygame.sprite.Sprite):
    def __init__(self, pos, size):
        super().__init__()
        self.image = pygame.Surface((size, size))
        self.image.fill('grey')
        self.rect = self.image.get_rect(topleft = pos)

馅饼--

这是另一个代码:

class Player(pygame.sprite.Sprite):
def __init__(self, pos):
    super().__init__()
    self.image = pygame.Surface((32, 64))
    self.image.fill('red')
    self.rect = self.image.get_rect(topleft = pos)
    self.direction = pygame.math.Vector2(0, 0)

和:

def run(self):

    #Level Tiles

    self.tiles.update(self.world_shift)
    self.tiles.draw(self.display_surface)
    
    # Player

    self.player.update()
    self.player.draw(self.display_surface)

导致问题的代码:

player = Player(200)

player = Player(200)

这就是问题所在。当 Player() 的构造函数被调用时,它被赋予一个 200 的 pos 参数。这是后来的用户 get_rect( topleft = pos ).

查看 get_rect() 的 documentation,给定的位置是一个元组, co-ordinate 个值。

所以尝试:

player = Player( ( 200, 200 ) )

其中 200,200 是您希望精灵起源的位置。