Sprite просто продолжает двигаться Python Pygame - PullRequest
0 голосов
/ 29 сентября 2018

Добрый день.Я использую Python 3.6.5 и Pygame.Видишь ли, дело в том, что мой Mario спрайт продолжает двигаться вверх, даже когда не должен.Вот соответствующий код:

if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            my_change = -2.5

        if pygame.key == pygame.KEYUP:
            if event.key == pygame.K_UP:
                my_change = 2.5

my += my_change

Как я уже сказал, он просто продолжает двигаться вверх, вверх, вверх, вверх!

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

изменить на что-то вроде этого,

running = True
while running:
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            my_change -= 2.5

    if event.key == pygame.K_DOWN:
        my_change += 2.5

my += my_change
0 голосов
/ 01 октября 2018

То, что вы хотите, это добавить «гравитацию».Вы можете посмотреть на stackoverflow и возникнут сотни подобных вопросов.

Основная идея заключается в том, что гравитация всегда присутствует, вы не просто добавляете ее при нажатии клавиш.

Вы не опубликовали свой полный код, поэтому при условии, что проверка выполняется в основном цикле и что вы используете стандартную настройку «+ направление мало», все, что вам нужно сделать, это всегда добавитьдвижение в сторону дна и обратное движение только при нажатии кнопки.

Это означает что-то вроде этого (опять же, без полного кода, я думаю, немного):

my_change = 2.5
running = True
while running:
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            my_change = -2.5

    if event.key == pygame.KEYUP:
        if event.key == pygame.K_UP:
            my_change = 2.5

    my += my_change

ЭтоВозможно, вам поможет, если вы думаете о change как о velocity, так что если вы дадите положительную скорость, она будет двигаться вниз, если она отрицательна, она будет двигаться вверх, а если она равна 0, она вообще не будет двигаться.

0 голосов
/ 29 сентября 2018

Правильна ли ваша логика - KEYDOWN - это когда клавиша нажата, и KEYUP, когда она отпущена - поэтому вам нужно установить изменение, чтобы задать направление, K_UP - это стрелка вверх, а K_DOWN - стрелка вниз - так что, возможно, попробуйте что-нибудьбольше похоже на

if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            my_change = -2.5

        if event.key == pygame.K_DOWN:
            my_change = 2.5

my += my_change
...