如何使用sprite-sh中的多个图像创建行走角色

2024-09-27 07:35:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创造一个“幻觉”,也就是说,我的角色正在行走,使用来自多个精灵位置的多张图片。我只知道如何使用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()

Tags: keyimageeventiftypeloadmcscreen
2条回答

首先要从sprite工作表中提取各个sprite,然后要使用迭代器(例如)在每次调用中将它们提供给drawing方法。

Here you have a tutorial关于如何从精灵工作表中获取单个图像以及如何将它们用于动画。

我怀疑这是制作精灵动画的最有效的方法,但到目前为止,它对我很有用。

首先,我将所有sprite帧加载到名为“spritesheet”的列表中。然后每次触发move事件时,我遍历每个帧,在每次迭代之间更新显示。我还引入了一个小延时,使它看起来更流畅。再说一遍,也许不是最好的方法,但这是一种方法。

 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()

相关问题 更多 >

    热门问题