如何在 pygame 中的 class 内不断移动精灵

How to constantly move the sprite within a class in pygame

我知道使用 get_pressed 方法来测试是否按下了任何按钮,但是我无法在 class 函数中使用它。

class MainCharacter (pg.sprite.Sprite):
    def __init__(self, pos, direction, images, *groups):
        pg.sprite.Sprite.__init__(self, *groups)
        self.direction = direction
        self.images = images
        self.image = self.images[self.direction]
        self.rect = self.image.get_rect(topleft=pos)


    def get_event(self, event):
            keys = pg.key.get_pressed()
            if keys[pg.K_a]:
                self.direction = "left"
                self.rect.move_ip(-6, 0)
            elif keys[pg.K_d]:
                self.direction = "right"
                self.rect.move_ip(6, 0)
            elif keys[pg.K_w]:
                self.rect.move_ip(0, -6)
                self.direction = "up"
            elif keys[pg.K_s]:
                self.direction = "down"
                self.rect.move_ip(0, 6)
            self.image = self.images[self.direction]

我每按一个按钮,精灵仍然会移动6格,并且不会流畅地移动。

根据您的代码,我只能猜测您仅在处理 (keydown-) 事​​件时才调用 get_event

get_event 重命名为 update 并将其命名为 帧,例如:

while True:
    for e in pygame.event.get():
        if e.type == blablabla
           ...some event handling...

    yoursprite.update()

而不是

while True:
    for e in pygame.event.get():
        if e.type == pygame.KEYDOWN:
            yoursprite.get_event(e)