Pygame Zero Actor四边屏幕穿梭及帧动画功能实现问题求助
边界穿梭功能修复
你只实现了右边界的穿梭逻辑,剩余三个方向的判断逻辑如下,直接补充到update函数里原有右边界判断的下方即可:
- 左边界穿梭:当角色右边缘完全超出屏幕左侧(
player.right < 0)时,将角色左边缘设置为屏幕宽度WIDTH,即可从右侧出现 - 下边界穿梭:当角色上边缘完全超出屏幕底部(
player.top > HEIGHT)时,将角色下边缘设置为0,即可从顶部出现 - 上边界穿梭:当角色下边缘完全超出屏幕顶部(
player.bottom < 0)时,将角色上边缘设置为屏幕高度HEIGHT,即可从底部出现
帧动画逻辑修复
你当前的写法存在问题:otherimage函数切换到ship.png后直接调用了imagey(),会立刻切回ship1.png,导致ship.png几乎不会显示在屏幕上,只能看到ship1.png的静态效果。
修正方案为:每次切换图片后,都用clock.schedule_unique定时调度下一次切换,不要直接调用下一个切换函数,同时可以把切换间隔从1秒调整为0.1~0.3秒,动画效果会更自然。
完整修正代码
import pgzrun import pygame WIDTH = 850 HEIGHT = 425 # sprites title = Actor('title.png') title.pos = 400, 212 cont = Actor('cont.png') cont.pos = 470, 300 player = Actor('ship.png') player.pos = 100, 56 foe = Actor('foe.png') foe.pos = 200, 112 vel = 5 music.play("temp.mp3") def draw(): screen.clear() screen.fill((0, 0, 0)) title.draw() cont.draw() foe.draw() player.draw() def update(): keys = pygame.key.get_pressed() x, y = player.pos x += (keys[pygame.K_d] - keys[pygame.K_a]) * vel y += (keys[pygame.K_s] - keys[pygame.K_w]) * vel player.pos = x, y # 右边界穿梭 if player.left > WIDTH: player.right = 0 # 左边界穿梭 if player.right < 0: player.left = WIDTH # 下边界穿梭 if player.top > HEIGHT: player.bottom = 0 # 上边界穿梭 if player.bottom < 0: player.top = HEIGHT def switch_to_ship(): player.image = 'ship.png' # 定时0.2秒后切换到另一张图,间隔可自行调整 clock.schedule_unique(switch_to_ship1, 0.2) def switch_to_ship1(): player.image = 'ship1.png' # 定时0.2秒后切换到另一张图 clock.schedule_unique(switch_to_ship, 0.2) # 启动动画 switch_to_ship1() pgzrun.go()
内容的提问来源于stack exchange,提问作者Whi_24
相关产品推荐
相关产品推荐

