Итак, когда я создаю игру, мой спрайт - летучая мышь. Пока пользователь нажимает левую или правую клавишу, анимация работает отлично; однако я попытался добавить, где пользователь стоит на месте, анимация «полета» по-прежнему воспроизводится в направлении, в котором был последний игрок, поэтому не похоже, что летучая мышь просто плавает.
В результате я получаю, что спрайт не появляется на экране, если я не удерживаю одну из клавиш перемещения, когда я просто хочу, чтобы он постоянно анимировался, даже когда пользователь не двигается.
Я могу получить спрайт в определенном направлении, отображая одно изображение в неподвижном состоянии, но не должным образом анимировать.
Я слышал о библиотеке pyganim, но не могу использовать ее из-за окружающая среда, в которой я нахожусь, поэтому я борюсь с опциями.
Вот соответствующий код для функции рисования:
def draw(self,window):
#we must keep track of direction, are they moving and how many steps for frames
if self.walkcount +1 >= 15: #15 as we have 5 sprites, which will be displayed 3 times per second
self.walkcount = 0
if not(self.standing): #if hes not standing still or moving, we'll walk through our animation
if self.left:
window.blit(walkleft[self.walkcount//3],(self.x,self.y))#excludes remainders
self.walkcount+=1
elif self.right:
window.blit(walkright[self.walkcount//3],(self.x,self.y))
self.walkcount+=1
elif self.isjump:
window.blit(jumpp,(self.x,self.y))
self.walkcount+=1
else: #if he is, we'll blit him looking right or left
if self.right:
if self.walkcount +1 >= 15:#
self.walkcount = 0#
while True:#
#anim1.blit(window,(self.x,self.y)) #previous attempt
#window.blit(walkright[0],(self.x,self.y)) #displays first image of that direction when stood still
window.blit(walkright[self.walkcount//3],(self.x,self.y))
self.walkcount+=1
else:
if self.walkcount +1 >= 15:
self.walkcount = 0#
while True:#
#anim2.blit(window,(self.x,self.y))
#window.blit(walkleft[0],(self.x,self.y))
window.blit(walkright[self.walkcount//3],(self.x,self.y))
self.walkcount+=1
Это то место, где сделаны базовые c анимации для где true или left - true, анимация будет воспроизводиться, пока это правда.
Фактический бит, который я редактировал, пытаясь заставить его работать:
else: #if he is, we'll blit him looking right or left
if self.right:
if self.walkcount +1 >= 15:#
self.walkcount = 0#
while True:#
#anim1.blit(window,(self.x,self.y)) #previous attempt
#window.blit(walkright[0],(self.x,self.y)) #displays first image of that direction
window.blit(walkright[self.walkcount//3],(self.x,self.y))
self.walkcount+=1
else:
if self.walkcount +1 >= 15:
self.walkcount = 0#
while True:#
#anim2.blit(window,(self.x,self.y))
#window.blit(walkleft[0],(self.x,self.y))
window.blit(walkright[self.walkcount//3],(self.x,self.y))
self.walkcount+=1
Функции движения:
if keys[pygame.K_LEFT] and man.x > man.vel-man.vel: #if pressed we move our character by the velocity in whatever direction via grid which works from the TOP LEFT of screen
#vel-vel to equal 0, makes border better
man.x -= man.vel
man.left = True #were global variables
man.right = False
man.standing = False
elif keys[pygame.K_RIGHT] and man.x < 500 - man.width:
man.x += man.vel #screenwidth
man.right = True
man.left = False
man.standing = False
else:
man.standing = True #now we'll know if he's looking left or right
man.walkcount = 0
Любые другие предложения / отзывы оценили.