Перемещение в pygame
Есть такой код:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.image = cycle_left
self.rect.x -= self.speed
elif keys[pygame.K_RIGHT]:
self.image = cycle_right
self.rect.x += self.speed
elif keys[pygame.K_UP]:
self.image = cycle_up
self.rect.y -= self.speed
elif keys[pygame.K_DOWN]:
self.image = cycle_down
self.rect.y += self.speed
else:
self.image = cycle_up
self.rect.y -= self.speed
Если нажать и держать стрелку влево (или любую другую), то мотоцикл будет ехать влево до тех пор, пока я не отпущу клавишу. А мне нужно сделать так, чтобы достаточно было один раз нажать на клавишу и мотоцикл ехал влево до тех пор, пока не будет нажата другая клавиша. P.S.: Вторая проблема, если даже зажать клавишу и ехать влево, то картинка дергается между cycle_up и cycle_left
Ответы (1 шт):
Автор решения: Данил
→ Ссылка
direction = ""
# используйте строчку выше в начале своего кода(где указываете все переменные)
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] or direction == "left":
self.image = cycle_left
self.rect.x -= self.speed
direction = "left"
elif keys[pygame.K_RIGHT] or direction == "right":
self.image = cycle_right
self.rect.x += self.speed
direction = "right"
elif keys[pygame.K_UP] or direction == "up":
self.image = cycle_up
self.rect.y -= self.speed
direction = "up"
elif keys[pygame.K_DOWN] or direction == "down":
self.image = cycle_down
self.rect.y += self.speed
direction = "down"
else:
self.image = cycle_up
self.rect.y -= self.speed
direction = "up"
По-моему я решил вашу проблему, с помощью добавления переменной направления(direction).