跳进Pygame

时间:2016-05-31 19:29:52

标签: python pygame

我正试图在pygame中制作像几何破折号的游戏。除了跳跃部分我完成了所有事情。我需要它,这样当角色在方块上时他可以跳起来,但不能在半空中双跳。现在我拥有它以便角色能够在地面上跳跃但是一旦角色接触到一组块上的跳跃,他就会开始上下跳动并且在滑块上时无法跳跃。有人可以帮忙吗?

onblock = False
for i in squares_list:
        if player_rect.bottom <= 560 and player_rect.colliderect(i):
            onblock = True
            player_rect.bottom = i.top + 1
        if player_rect.collidepoint((i.topleft[0], i.topleft[1]+1)):
            print ('Game Over')
    if event.type == KEYDOWN:     # if space is pressed the character jumps
            if event.key == K_SPACE:
                print(onblock)
                if onblock or player_rect.bottom == screen.get_rect().bottom  :  # prevents double jumps
                    vel_y = -20   # Makes the character jump up
                    player_rect.y -= 1
    if onblock:
        gravity = 0
        vel_y = 0
        current_angle = 0
    else:
        gravity = 1
        vel_y += gravity

    onblock = False

1 个答案:

答案 0 :(得分:0)

我不知道你在这篇文章或游戏中是否错误,但根据这篇文章,onblock在每次循环后总是为假。这可能是问题所在。

另一个可能的问题可能是您在碰撞发生时将角色放在平台上方1个像素。这意味着下次检查碰撞时,角色不会停留在块上,因此onblock将为False。

通过删除最后一行onblocks = False可以轻松解决第一个问题。第二个问题可以使用player_rect.bottom = i.top而不是+1来解决。

观看此talk以获取更多信息,尤其是在this时间戳附近。