我正在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
答案 0 :(得分:3)
不要使用嵌套循环来实现游戏过程。您有一个游戏循环,请使用它。您需要的只是主游戏循环和事件循环。按下 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()