我一直在慢慢尝试学习 pygame 和 python,并尝试制作一个简单的 spritesheet 动画。我很确定我做得不对,但我仍在努力了解课程的真正运作方式等等。到目前为止,我有一个按键返回True
和一个释放返回False
。True
然后激活动画的循环。
while done == False:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
x_speed = walk_speed
dir = 1
cycle = True
if event.key == pygame.K_LEFT:
x_speed = 0 - walk_speed
dir = 0
cycle = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
x_speed = 0
dir = 1
cycle = False
if event.key == pygame.K_LEFT:
x_speed = 0
dir = 0
cycle = False
if cycle == True:
it += 1
if it > 6:
it = 0
pygame.time.set_timer(it, 100)
elif cycle == False:
it = 1
pygame.time.set_timer(it, 0)
it = 1
ennis.speed = x_speed
if it > 6:
it = 0
if dir == 1:
ennis.sprite = walking_right[it]
if dir == 0:
ennis.sprite = walking_left[it]
ennis.update()
我知道这可能是一种可怕的、混乱的、基本的方法,但它有效,我理解!好吧,它几乎可以工作。
目前,传入的事件 Idpygame.time.set_timer()
是it
变量,它抛出一个Value Error
,表示 Id 必须介于 之间NOEVENT(0) and NUMEVENTS(32)
。所以,我看到它的方式是,我需要创建一个递增it
1 的事件,并在它超过 6 时重置为 0。
提前感谢您的帮助!