Python 在我的pygame程序中跳转不起作用-跳转到屏幕顶部并跳转到平台下方

Python 在我的pygame程序中跳转不起作用-跳转到屏幕顶部并跳转到平台下方,python,pygame,Python,Pygame,我有这个问题已经有一段时间了,我一直在寻找解决办法,尝试了很多事情,但我所做的一切似乎都不起作用。当我按下我的跳跃键时,精灵第一次跳得很高,然后每次都跳得很好,但都会掉到地底下。我将尝试附加一个视频,以显示我的意思 以下是包含跳跃的函数: def level1(): global running, jumping1, neg1 global x1, y1 , x2, y2, xChange1, yChange1, xChange2, yChange2, jump1, jump2,

我有这个问题已经有一段时间了,我一直在寻找解决办法,尝试了很多事情,但我所做的一切似乎都不起作用。当我按下我的跳跃键时,精灵第一次跳得很高,然后每次都跳得很好,但都会掉到地底下。我将尝试附加一个视频,以显示我的意思

以下是包含跳跃的函数:

def level1():
    global running, jumping1, neg1
    global x1, y1 , x2, y2, xChange1, yChange1, xChange2, yChange2, jump1, jump2, jumping1, 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()
def level1():
全局跑步、跳跃1、负1
全局x1、y1、x2、y2、xChange1、yChange1、xChange2、yChange2、跳线1、跳线2、跳线1、跳线2、isJump
运行时:
时钟滴答声(FPS)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
xChange1=-5
如果event.key==pygame.K_RIGHT:
xChange1=5
如果event.key==pygame.K_UP:
如果没有跳线1:
跳转1=真
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
xChange1=0
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_a:
xChange2=-5
elif event.key==pygame.K\u d:
xChange2=5
elif event.key==pygame.K_w:
yChange2=-5
elif event.key==pygame.K_:
yChange2=5
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_a或event.key==pygame.K_d:
xChange2=0
elif event.key==pygame.K_s或event.key==pygame.K_w:
yChange2=0
如果跳转1:
如果跳线1>=-25:
负1=1
如果跳线1宽度-字符1宽度:
x1=宽度-字符宽度
如果y1<0:
y1=0
如果y1>HEIGHT-Char1HEIGHT-50:
y1=高度-Char1高度-50
如果x2<0:
x2=0
如果x2>宽度-字符2宽度:
x2=宽度-字符2宽度
如果y2<0:
y2=0
如果y2>高度-Char2HEIGHT-50:
y2=高度-Char2高度-50
pygame.display.flip()
这是一个包含我全部代码的链接:


这里有一个显示我的程序的视频链接:

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

jumpCount=10#=-jumpCount:
负1=1
如果跳转1,问题可能在
如果跳转1:
块内。尝试一种更简单的方法,使用一条抛物线,在经过的时间内使用一个变量来设置跳跃动画,以获得角色的y值。例如:
y(t)=-(t-3)**2+9,t€[0,6]
注:
y(0)=y(6)=0
y(3)=max(y)=9