我可以让我的物体停下来。一旦我按下w,a,s或d它就会移动但不会停止。当我按下其中一个方向时它会移动但它不会停止。当我释放钥匙时,我需要它停止。所有类型的帮助将不胜感激。继承我的代码:
while (running == 1):
screen.fill(white)
for event in pygame.event.get():
if (event.type == pygame.QUIT):
running = 0
elif (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_d):
dir = "R"
elif (event.key == pygame.K_a):
dir = "L"
elif (event.key == pygame.K_s):
dir = "D"
elif (event.key == pygame.K_w):
dir = "U"
elif (event.key == pygame.K_ESCAPE):
sys.exit(0)
elif (event.key == pygame.K_SPACE):
shot=True
xbul=xgun
ybul=ygun
#if key[K_SPACE]:
#shot = True
#OBJECT'S MOVEMENTS
if (dir == "R" and xgun<595):
xgun = xgun + 3
pygame.event.wait
elif (dir == "L" and xgun>0):
xgun = xgun - 3
pygame.event.wait
elif (dir == "D" and ygun<460):
ygun = ygun + 3
pygame.event.wait
elif (dir == "U" and ygun>0):
ygun = ygun - 3
screen.blit(gun, (xgun,ygun))
#PROJECTILE MOTION
#key = pygame.key.get_pressed()
if shot == True:
xbul = xbul + 3
screen.blit(bullet, (xbul, ybul))
if xbul>600:
shot=False
pygame.display.flip()
time.sleep(0.01)
答案 0 :(得分:6)
你应该抓住pygame.KEYUP
并停止当前的动作。
答案 1 :(得分:0)
使用pygame.key.get_pressed()
那是
key = pygame.key.get_pressed()
if key[pygame.K_d]:
dir = "R"
elif key[pygame.K_a]:
dir = "L"
elif key[pygame.K_s]:
dir = "D"
elif key[pygame.K_w]:
dir = "U"
elif key[pygame.K_ESCAPE]:
sys.exit(0)
elif key[pygame.K_SPACE]:
shot = True
xbul = xgun
ybul = ygun
else: # If none of the keys is pressed, Stop.
dir = 'S'