0

私はゆっくりと 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 ErrorNOEVENT(0) and NUMEVENTS(32)it

助けてくれてありがとう!

4

1 に答える 1