Движение объектов Pygame - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть два объекта, которыми я управляю с помощью своего keboard, один с WASD, а другой с помощью стрелок.(Представьте 2D-игру)

Недавно я создал код, чтобы они продолжали двигаться, пока нажата клавиша, но если я продолжаю нажимать кнопку со стрелкой вверх и вверх одновременно, только одна из них будет работать, а другая остановится.Я хотел бы знать, как исправить.

Это код движения:

if e.type == pygame.KEYDOWN:

    if e.key==K_d:
        PX += movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_a:
        PX -= movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_w:

        PY -= movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_s:

        PY += movimentenpx
        EnergiaD +=energiapermoviment

    if e.key ==K_UP:

        PY2 -= movimentenpx
        EnergiaD2 +=energiapermoviment

    if e.key ==K_LEFT:
        PX2 -= movimentenpx

        EnergiaD2 +=energiapermoviment

    if e.key ==K_DOWN:

        PY2 += movimentenpx
        EnergiaD2 +=energiapermoviment

    if e.key ==K_RIGHT:
        PX2 +=movimentenpx
        EnergiaD2 +=energiapermoviment

1 Ответ

0 голосов
/ 13 декабря 2018

Получение нажатий клавиш с for event in pygame.event.get(): даст вам только одно нажатие клавиши за раз.вам нужно использовать pygame.key.get_pressed(), чтобы получить массив этого состояния всей клавиатуры.

pressed_keys = pygame.key.get_pressed()
if pressed_keys[pygame.K_w]:
    # do stuff
if pressed_keys[pygame.K_s]:
    # do stuff

Все это происходит в основном игровом цикле.Это также способ захвата клавиш, если вы хотите удерживать клавиши.

Для получения дополнительной документации: https://www.pygame.org/docs/ref/key.html#pygame.key.get_pressed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...