有没有办法将pygame.display.update添加到缩进循环中



我正在pygame上开发一个简单的游戏,我正在使用此代码来实现跳转,但更新函数在for循环中不起作用,有没有办法解决这个问题:

while Running:
if keys[pygame.K_UP]:
if Y > 0:
if Jump == False:
for i in range(1,100):
pygame.time.delay(10)
pygame.display.update()
Y -= 10
Jump = True

if not keys[pygame.K_UP]:
if Y < 500-Height:
Y+= Vel
win.fill((0,0,0))
pygame.draw.rect(win, (255, 0, 0), (X, Y, Width, Height))
pygame.display.update()

跳转确实有效,但动画并没有,它只是剪切到 i = 100 而不是平滑过渡

不要使用嵌套循环来实现游戏过程。你有一个游戏循环,使用它。您所需要的只是主游戏循环和一个事件循环。按下UP时,将状态设置为Jump。跳转结束时重置状态。根据每帧中的状态Jump计算播放器的位置。例如:

jump_i = 0
while Running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
if Y > 0 and Jump == False:
Jump = True
jump_i = 0
if Jump and jump_i < 100:
jump_i += 1
Y -= 10
else:
Jump = False
if Y < 500-Height:
Y += Vel
win.fill((0,0,0))
pygame.draw.rect(win, (255, 0, 0), (X, Y, Width, Height))
pygame.display.update()

最新更新