Ich habe es so gemacht, wenn ein Benutzer WASD anklickt, macht es smooth_x oder smooth_y bis 5, um ständig ihre x- oder y-Koordinaten hinzuzufügen, um Bewegung zu simulieren.Pygame: KEYDOWN und KEYUP werden zur gleichen Zeit ausgelöst, verursacht keine Nettobewegung
Allerdings habe ich ein Problem, wo, wenn der Benutzer nach unten hält einen dann auf sich D zur gleichen Zeit, verursacht es smooth_x 0 sein, so dass der Benutzer an seinem Platz bleiben.
EG Benutzer klickt D (smooth_x = 5) Benutzer klickt A (smooth_x = -5) Der Benutzer hält D und dann A und dann los von D was zu smooth_x ist = 0 führt dazu das der Benutzer aufhört sich zu bewegen was ich nicht weiß t möchten. In diesem Szenario smooth_x = sollte -5
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
in KEYUP nicht '0' setzen aber Wert hinzufügen/subtrahieren wie in KEYDOWN – furas