我正在用python3为一个学校项目编写一个游戏(使用pygame),但我正在努力: 我试图让我的精灵在移动时有一个动画,但它只显示一个静态图像: 当我按左键时,精灵的图像将变为静态图像,而不是由3个png组成的动画。 下面是代码的一部分:
clock = pygame.time.Clock()
walkRight = [pygame.image.load('ressources/images/R1.png'), pygame.image.load('ressources/images/R2.png'), pygame.image.load('ressources/images/R3.png')]
walkLeft = [pygame.image.load('ressources/images/L1.png'), pygame.image.load('ressources/images/L2.png'), pygame.image.load('ressources/images/L3.png')]
walkUp = [pygame.image.load('ressources/images/U1.png'), pygame.image.load('ressources/images/U2.png'), pygame.image.load('ressources/images/U3.png')]
walkDown = [pygame.image.load('ressources/images/D1.png'), pygame.image.load('ressources/images/D2.png'), pygame.image.load('ressources/images/D3.png')]
#this is the player sprite
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = (walkDown[4//3])
self.rect = self.image.get_rect()
self.rect.centerx = width / 2
self.rect.bottom = height / 2
self.speedx = 0
self.speedy = 0
self.velocity = 2
def update(self):
self.speedx = 0
self.speedy = 0
left = False
right = False
up = False
down = False
run = False
walkCount = 4
runCount = 4
clock.tick(FPS)
keys = pygame.key.get_pressed()
#I believe this is the part that has something wrong!
if walkCount + 1 >= 9:
walkCount = 0
if (down == True and run == False):
walkCount += 1
self.image = (walkDown[walkCount//3])
elif (up == True and run == False):
walkCount += 1
self.image = (walkUp[walkCount//3])
elif (right == True and run == False):
walkCount += 1
self.image = (walkRight[walkCount//3])
elif (left == True and run == False):
walkCount += 1
self.image = (walkLeft[walkCount//3])
walkCount
是方法update
中的局部变量。每次调用update
时,它都由4
初始化。因此walkCount
的值在函数的开头是相同的,每次都是一样的。这会导致图像看起来是静态的。walkCount
必须是类Player
的属性,而不是局部变量:相关问题 更多 >
编程相关推荐