我知道使用get_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个空格,并且不会流畅地移动。
答案 0 :(得分:1)
从您的代码中我只能猜测只有在处理(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)