我想用我的键盘在屏幕上对角移动我的飞船精灵,但每次尝试都是错误的。我使用w,s,a,d键在一个方向上移动没有问题,但是当我尝试将它们组合时,它只是不起作用。 为了向一个方向移动我使用脚本:
key = pygame.key.get_pressed()
if key[pygame.K_w]:
classes.Ship.going_right = False
ship.image = pygame.image.load('Images/myship3.png')
ship.rect.y -= 8
elif key[pygame.K_s]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, 180)
ship.rect.y += 8
elif key[pygame.K_a]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, 90)
ship.rect.x -= 8
elif key[pygame.K_d]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, -90)
ship.rect.x += 8
我有几次尝试让精灵向上和向右倾斜(通过按'w'和'd'键):
elif key[pygame.K_w]:
if key[pygame.K_d]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, -45)
ship.rect.x += 8
ship.rect.y -= 8
没有做任何事情或
elif [key[pygame.K_w] + key[pygame.K_d]]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, -45)
ship.rect.x += 8
ship.rect.y -= 8
它自动向上和向右移动船(不等我按键)。我已经没有了dumm的想法。任何sugestions?
答案 0 :(得分:4)
如果你把ifif放在ifs之后那么它就不会起作用了。您可以更改第一个if:
if key[pygame.K_w]:
if key[pygame.K_d]:
ship.image = pygame.image.load('Images/myship3.png')
ship.image = pygame.transform.rotate(ship.image, -45)
ship.rect.x += 8
ship.rect.y -= 8
else:
classes.Ship.going_right = False
ship.image = pygame.image.load('Images/myship3.png')
ship.rect.y -= 8
另外,我不知道pygame是如何工作的,但每次移动船只时读取图像文件似乎都是个坏主意。这将是每帧一次读取硬盘驱动器中的文件。也许你应该先阅读一次并将其保存在变量中。