ユーザーがWASDをクリックするとsmooth_xまたはsmooth_yが5になり、動きをシミュレートするためにxまたはy座標が常に追加されます。Pygame:同時にKEYDOWNとKEYUPが同時に起動しない
しかし、ユーザーがAキーを押し続けているときに同時にDキーを押すと、smooth_xが0になり、ユーザーがその場所に留まるという問題があります。ユーザがクリックするとDが保持され、次にAを保持してDを移動してsmooth_xが0になると、ユーザは移動を停止し、欲しい。このシナリオではsmooth_x =あるべき-5あなたはKEYDOWN
ではなく、反対の符号をどうのように
while gameloop == True:
num_scraps = 0
fps.tick(60) #Sets FPS to 60
for event in pygame.event.get(): #Checks each event
if event.type == pygame.QUIT: #If one of the events are quit (when the user clicks the X in the top right corner) the window closes
pygame.quit()
if event.type == pygame.KEYUP:
print(event)
#If the user stop pressing one of the arrow keys it sets all the smooth values to 0 so it stops increasing the x or y coordinate
if event.key == pygame.K_w:
smoothy = 0
if event.key == pygame.K_s:
smoothy = 0
if event.key == pygame.K_a:
smoothx = 0
if event.key ==pygame.K_d:
smoothx = 0
if event.type == pygame.KEYDOWN: #Checks for a keypress
print(event)
if event.key == pygame.K_w:
smoothy -= 5 #reduces the y by 5 so player moves up
if event.key == pygame.K_s:
smoothy += 5 #increases the y by 5 so player moves down
if event.key == pygame.K_a:
smoothx -= 5 #reduces the x by 5 so player moves left
if event.key == pygame.K_d:
smoothx += 5 #increases the x by 5 so player moves right
は0に設定されていませんが、KEYDOWNのように値を加算/減算します – furas