微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

跳入我的 pygame 程序不起作用 - 跳到屏幕顶部并低于平台

如何解决跳入我的 pygame 程序不起作用 - 跳到屏幕顶部并低于平台

我遇到这个问题已经有一段时间了,我一直在寻找解决方案并尝试了很多方法,但我所做的一切似乎都不起作用。发生的事情是,当我按下跳跃键时,精灵第一次跳得非常高,然后每次都正确跳跃但低于地面。我会尝试以某种方式附上视频来表达我的意思。

这是其中包含跳转函数

def level1():
    global running,jumping1,neg1
    global x1,y1,x2,y2,xChange1,yChange1,xChange2,yChange2,jump1,jump2,jumping2,isJump

    
    while running:
        clock.tick(FPS)
        
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    xChange1 = -5
                if event.key == pygame.K_RIGHT:
                    xChange1 = 5
                if event.key == pygame.K_UP:
                    if not jumping1:    
                        jumping1 = True
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    xChange1 = 0


            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    xChange2 = -5
                elif event.key == pygame.K_d:
                    xChange2 = 5
                elif event.key == pygame.K_w:
                    yChange2 = -5
                elif event.key == pygame.K_s:
                    yChange2 = 5
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a or event.key == pygame.K_d:
                    xChange2 = 0
                elif event.key == pygame.K_s or event.key == pygame.K_w:
                    yChange2 = 0           

        if jumping1:
            if jump1 >= -25:
                neg1 = 1
                if jump1 <0:
                    neg1 = -1
                y1 -= (jump1 **2) * 0.5 * neg1
                jump1 -= 1
            else:
                jump1 = 10
                jumping1 = False
 
        x1 += xChange1
        x2 += xChange2
        y1 += yChange1
        y2 += yChange2

        gravity1(y1)
        
        screen.blit(game_image,(0,0))
        character1(x1,y1)
        character2(x2,y2)
        gameFloor(fx,fy)

        if x1 < 0:
            x1 = 0
        if x1 > WIDTH - Char1WIDTH:
            x1 = WIDTH - Char1WIDTH

        if y1 < 0:
            y1 = 0
        if y1 > HEIGHT - Char1HEIGHT - 50:
            y1 = HEIGHT - Char1HEIGHT - 50

        if x2 < 0:
            x2 = 0
        if x2 > WIDTH - Char2WIDTH:
            x2 = WIDTH - Char2WIDTH

        if y2 < 0:
            y2 = 0
        if y2 > HEIGHT - Char2HEIGHT-50:
            y2 = HEIGHT - Char2HEIGHT -50


            
        pygame.display.flip()

这是包含我的全部代码链接https://trinket.io/python/8d14105b3d

这是显示我的节目的视频的链接https://kapwi.ng/w/50KogQ7A

解决方法

问题是if jump1 >= -25:。如果跳转从 10 开始,则结束必须在 -10。对于更高的跳跃,您可以尝试 12。使用 jumpCount 设置开始并检查跳跃的结束:

jumpCount = 10   # <-- try 12 here
jump1 = jumpCount

def level1():
    # [...]

    while running:
        # [...]

        if jumping1:
            if jump1 >= -jumpCount:
                neg1 = 1
                if jump1 <0:
                    neg1 = -1
                y1 -= (jump1 **2) * 0.5 * neg1
                jump1 -= 1
            else:
                jump1 = jumpCount
                jumping1 = False

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。