我想创造“幻觉”,可以说我的角色正在行走,使用多张精灵位置的多张图片。我只知道如何使用WASD移动单个图像。到目前为止,这是我的代码:
room_bg = 'woodf.jpg'#wood floor background
screen = pygame.display.set_mode((640,360),0,32)
background = pygame.image.load(room_bg).convert()#background here
x,y = 290,150
movex, movey = 0,0
while 1:#blitting background to middle of screen, start of main game loop
screen.blit(background, (170,100))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_a:
movex = -1
pygame.image.load('s_left1.png')
pygame.Surface.blit(mc_left1)
elif event.key == K_d:
movex = +1
elif event.key == K_w:
movey = -1
elif event.key == K_s:
movey = +1
if event.type == KEYUP:
if event.key == K_a:
movex = 0
elif event.key == K_d:
movex = 0
elif event.key == K_w:
movey = 0
elif event.key == K_s:
movey = 0
x+= movex
y+= movey
mc = pygame.image.load('ss.png').convert()
mc.set_colorkey((0,0,0))
screen.blit(mc,(x,y))
pygame.display.update()
答案 0 :(得分:1)
首先要从精灵表中提取单个精灵,然后你想使用一个迭代器来为每个调用中的绘图方法提供它们。
Here you have a tutorial关于如何从精灵表中获取单个图像以及如何将它们用于动画。
答案 1 :(得分:0)
我怀疑这是动画精灵的最有效方式,但到目前为止它一直在为我工作。
首先,我将所有精灵帧加载到名为 spritesheet 的列表中。然后每次触发移动事件时,我遍历每个帧,在每次迭代之间更新显示。我还介绍了一个小的时间延迟,使它看起来更流畅。再说一次,可能不是最好的方法,但这是一种方式。
for spriteframe in spritesheet:
x_add = x/len(spritesheet)
y_add = y/len(spritesheet)
player.setPosition( player.getX() + x_add, player.getY() + y_add )
updateBackground(current_map)
pygame.time.delay(40)
updateCharacter(player,spriteframe, image)
pygame.display.update()