雪碧只是一直在移动Python Pygame

时间:2018-09-29 01:53:20

标签: python pygame sprite

美好的一天。我正在使用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 :(得分:1)

您的逻辑是否正确-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

答案 1 :(得分:0)

将其更改为类似的内容

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

答案 2 :(得分:0)

您要添加“重力”。您可以看一下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根本不会移动。