我只是使用“w,a,s,d”在窗口移动一个精灵,我想通过按空格键让这个精灵“射击”。
我遇到的问题是精灵出现但是直到我释放空格键才移动,我希望精灵镜头向前移动直到窗口结束,只需按空格键,而不是释放它。
这是我的主要循环:
while pygame.event.poll().type != QUIT:
screen.blit(background, (0, 0))
#"player" is the sprite moving around the window
player.move(width,height)
screen.blit(player.image, player.rect)
key = pygame.key.get_pressed()
if key[K_SPACE]:
xpos = player.rect.right
ypos = player.rect.top
shot_on_screen = True
if shot_on_screen:
xpos += 1
#"kame" is the sprite i want to move forward
screen.blit(shot.kame, (xpos, ypos))
else:
shot.x = player.rect.right
shot.y = player.rect.top
shot_on_screen = False
pygame.display.update()
我是这个python-pygame世界的新手,我在询问之前检查了很多手册和文档,希望你能帮忙,谢谢。
答案 0 :(得分:0)
按下K_SPACE时,您正在将xpos设置到每个循环中最右边的位置。你不应该这样做。尝试删除该行。
if key[K_SPACE]:
ypos = player.rect.top
shot_on_screen = True
此外,我不知道您是否正在检查镜头是否在代码上的其他位置的屏幕上,但您发布的代码不会将其设置为false。
if shot_on_screen:
xpos += 1
#"kame" is the sprite i want to move forward
screen.blit(shot.kame, (xpos, ypos))
else:
shot.x = player.rect.right
shot.y = player.rect.top
shot_on_screen = False # won't work. It is already False.