首页 > 解决方案 > 我在 Pygame 中遇到了精灵的问题。我希望他们改变它们,让它看起来像一个动画,我真的不知道该怎么做

问题描述

def redraw():

    global walkCount
    global x

    night(0, 0)

    street(0, -800)

    if walkCount + 1 >= 27:
        walkCount = 0
    if left:
        gameDisplay.blit(walkLeft(walkCount//3), (x, y))
        walkCount += 1
    elif right:
        gameDisplay.blit(walkRight(walkCount//3), (x, y))
        walkCount += 1
    else:
        gameDisplay.blit(char(x, y))

    pygame.display.flip()

所以这是重绘框架的定义。walkLeft并且walkRight是带有图片的列表。

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT or event.key == pygame.K_a:
        x_change = -vel
        left = True
        right = False
    elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
        x_change = +vel
        right = True
        left = False
    else:
        right = False
        left = False
        walkCount = 0
if event.type == pygame.KEYUP:
    if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_d or event.key == pygame.K_a:
        x_change = 0
        right = False
        left = False

这就是左右行走的逻辑。

你能帮我吗,我是菜鸟,我想学习。

标签: pythonpygame

解决方案


walkLeft(walkCount//3)是一个函数调用语句。但是,walkLeftandwalkRight是列表,而不是函数。您必须通过订阅 ( ()-> []) 获取列表元素:

gameDisplay.blit(walkLeft(walkCount//3), (x, y))

gameDisplay.blit(walkLeft[walkCount//3], (x, y))

gameDisplay.blit(walkRight(walkCount//3), (x, y))

gameDisplay.blit(walkRight[walkCount//3], (x, y))

推荐阅读