You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame中Sprite无法仅上下循环移动,而是全屏往复问题求助

解决Sprite仅上下循环移动的问题

你的代码现在同时处理了水平和垂直两个方向的移动与反弹,这就是为什么精灵会在整个窗口内来回跑。要实现纯上下循环移动,只需要修改两处:

  • 把水平方向的速度设为0,也就是speed = [0, 2],这样精灵不会左右移动
  • 删除水平方向碰撞反弹的判断代码(就是判断birdrect.left < 0 or birdrect.right > width的那段)

修改后的完整代码:

import sys, pygame
pygame.init()

size = width, height = 500, 500
speed = [0, 2]  # 水平速度设为0,仅保留垂直方向速度
blue = 85, 118, 250

screen = pygame.display.set_mode(size)

bird = pygame.image.load("bird-sprite.png")
birdrect = bird.get_rect()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

    birdrect = birdrect.move(speed)
    # 只保留垂直方向的碰撞反弹逻辑
    if birdrect.top < 0 or birdrect.bottom > height:
        speed[1] = -speed[1]
        
    screen.fill(blue)
    screen.blit(bird, birdrect)
    pygame.display.flip()

简单解释下:

  • speed[0]控制水平移动速度,设为0后精灵就不会左右跑了
  • 删除水平方向的碰撞判断,避免误触发水平方向的速度反转
  • 剩下的垂直方向逻辑会让精灵碰到窗口顶部或底部时,反转垂直方向的速度,实现上下循环移动

内容的提问来源于stack exchange,提问作者Dave Klein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:47:08