私はゆっくりと pygame と python を学ぼうとしており、単純なスプライト シート アニメーションを作成しようとしました。私はそれを正しくやっていないとかなり確信していますが、クラスが実際にどのように機能するかなどをまだ学ぼうとしています. これまでのところ、キーを押すと戻り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()
は変数であり、ID は の間にある必要があると言ってit
、 をスローします。つまり、 1 ずつ増加し、6 を超えると 0 にリセットされるイベントを作成する必要があるということです。Value Error
NOEVENT(0) and NUMEVENTS(32)
it
助けてくれてありがとう!