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