如何在皮格姆的一个类中不断移动精灵

2024-04-26 17:42:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道使用get\u pressed方法来测试是否有任何按钮被按下,但是我不能让它在类函数中工作。你知道吗

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个空格,而且不会流畅地移动。你知道吗


Tags: rectimageselfipgetmovekeys按钮
1条回答
网友
1楼 · 发布于 2024-04-26 17:42:50

从您的代码中,我只能猜测只有在处理(keydown)事件时才调用get_event。你知道吗

get_event重命名为update,并将其称为everyframe,如下所示:

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)

相关问题 更多 >