Az animáció nélküli Pygame projektek hihetetlenül unalmasak lehetnek. Fokozza játékai vonzerejét magával ragadó animációk beépítésével.

Az animáció a játékfejlesztés kulcsfontosságú eleme, amely életet és dinamizmust kölcsönöz alkotásainak. Animációk beépítésével lenyűgöző látványvilágot és magával ragadó játékélményt hozhat létre játékosai számára.

A Pygame átfogó eszközkészletet kínál, amely leegyszerűsíti az animációk létrehozásának folyamatát. Beépített funkciókat kínál, beleértve a keretek betöltését és megjelenítését, az animációk vezérlését a lejátszó bemenetével és így tovább.

Hozzon létre egy egyszerű játékot

Kezdje egy egyszerű játék létrehozásával, amely lehetővé teszi a játékos számára, hogy balra és jobbra mozogjon. Platformot is hozzáadhat a játékhoz.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Hozzon létre egy új fájlt simple-game.py és definiáljon néhány változót, beleértve a lejátszó és a platform kezdeti pozícióit és sebességét. Ezeket a változókat fogják használni a játékos sprite mozgásának szabályozására.

instagram viewer

Kezelje a lejátszó bevitelét a billentyűzet állapotának lekérésével pygame.key.get_pressed(). Ha megnyomja a bal nyíl gombot, csökkentheti az értékét játékos_x, és ha megnyomja a jobbra nyíl gombot, növelheti. Ez mozgáshatást hoz létre a játékos sprite számára.

A kezdeti játéknak a következőképpen kell kinéznie:

Keretek betöltése és megjelenítése

Animációk létrehozásához különböző képek betöltése és megjelenítése vagy az animáció képkockáit. Minden képkocka egy adott képet vagy sprite-ot képvisel, amely sorozatban jelenik meg, hogy a mozgás illúzióját keltse. Tegyük fel, hogy három kerettel rendelkezik: keret0, keret1, és keret2. Kezdetben megjelenítheti keret0.

Hozzon létre egy új nevű fájlt anim.py és adja hozzá a kódot az alábbi frissítésekkel:


# Töltsön be kereteket
keret0 = pygame. Felület((20, 20))
frame0.fill((255, 0, 0))

keret1 = pygame. Felület((20, 20))
frame1.fill((0, 255, 0))

keret2 = pygame. Felület((20, 20))
frame2.fill((0, 0, 255))

# Kezdő keret beállítása
current_frame = frame0

# Játékhurok
míg futás:
# ...

# Renderje le a játékot
# ...
screen.blit (jelenlegi_kocka, (player_x, player_y))

pygame.display.flip()

# ...

Animációk vezérlése lejátszó bemenettel

A játékos sprite animálásához válthat a különböző képkockák között a játékos bevitele alapján. Például, amikor a játékos balra vagy jobbra mozog a nyílbillentyűkkel, a képkockák között váltogatva a mozgás illúzióját keltheti.

# Játékhurok
míg futás:
# ...

# Kezelje a lejátszó bevitelét
keys = pygame.key.get_pressed()
ha kulcsok[pygame. K_LEFT]:
player_x -= player_speed
jelenlegi_keret = keret1
elif kulcsok[pygame. K_RIGHT]:
player_x += player_speed
jelenlegi_keret = keret2
más:
current_frame = frame0

# Renderje le a játékot
# ...
screen.blit (jelenlegi_kocka, (player_x, player_y))

pygame.display.flip()

# ...

Alább látható a kimenet:

Kiegészítő funkciókkal együtt

Az alapvető animációs funkciók mellett a Pygame számos további funkciót is kínál a játékfejlesztési élmény fokozása érdekében.

Sprite lapok

Egyedi képkockák betöltése helyett használhat olyan sprite lapokat, amelyek több keretet tartalmaznak egyetlen képen. A Pygame funkciókat biztosít egy sprite lap meghatározott régióinak kibontására és megjelenítésére. Íme egy példa:

# Töltse be a sprite lap képét
sprite_sheet = pygame.image.load("spritesheet.png")

# Határozza meg az egyes keretek méreteit
frame_width = 32
frame_height = 32

# Képkockák kibontása a sprite lapról
defkivonat_keretek(lap, frame_width, frame_height):
# kód a keretek kibontásához

# Kivonja a kereteket a sprite lapról
keretek = kivonat_keretek (sprite_sheet, frame_width, frame_height)

# Képkocka megjelenítése a sprite lapról
current_frame = keretek[0]

# Játékhurok
míg futás:
# ...
screen.blit (jelenlegi_kocka, (player_x, player_y))
# ...

Animációs sebesség

Az animációk sebességét a keretfrissítések közötti késleltetéssel szabályozhatja. Ez egyenletes és valósághű mozgást tesz lehetővé. Íme egy példa arra, hogyan szabályozhatja az animáció sebességét használni a idő modult:

# Animációs sebesség változók
animation_delay = 100# Késleltetés ezredmásodpercben a keretfrissítések között
last_frame_time = pygame.time.get_ticks()

# Játékhurok
míg futás:
# ...

# Ellenőrizze, hogy elegendő idő telt-e el a keret frissítéséhez
aktuális_idő = pygame.time.get_ticks()
ha aktuális_idő - utolsó_kockaidő >= animációs_késleltetés:
# Frissítse a keretet

# Renderje le a játékot
# ...
screen.blit (jelenlegi_kocka, (player_x, player_y))

pygame.display.flip()

Ütközésészlelés

A Pygame ütközésérzékelő funkciókat kínál az animált objektumok közötti interakciók észlelésére, mint pl észleli, ha a játékos ütközik egy platformmal. Íme egy példa arra, hogyan építheti be az ütközésérzékelést a játékba:

# Ütközésészlelés
defcheck_collision(player_rect, platform_rect):
ha player_rect.colliderect (platform_rect):
# Ütközés történt
VisszatérésIgaz
más:
VisszatérésHamis

# Játékhurok
míg futás:
# ...

# Végezze el az ütközésérzékelést
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Rect (platform_x, platform_y,
platform_szélesség, platform_magasság)

ha check_collision (player_rect, platform_rect):
# Kezelje az ütközést

# Renderje le a játékot
# ...
screen.blit (jelenlegi_kocka, (player_x, player_y))

pygame.display.flip()

Ezekkel a kiegészítő funkciókkal bővítheti játékfejlesztési lehetőségeit, és dinamikusabb és magával ragadóbb játékélményt teremthet. Kísérletezzen különböző technikákkal, kombinálja őket kreatívan, és hagyja, hogy a képzelet vezessen az igazán lebilincselő játékok elkészítésében.

A Pygame animációkészítés legjobb gyakorlatai

Amikor animációt ad hozzá Pygame-projektjeihez, fontos, hogy kövesse néhány bevált gyakorlatot a megvalósítás optimalizálása és a zökkenőmentes és hatékony animációk biztosítása érdekében. Vegye figyelembe a következő irányelveket:

Előtöltheti és tárolhatja a kereteket a memóriában

A lemezről a játékhurok alatti képek betöltése késéseket okozhat, és befolyásolhatja a teljesítményt. Ennek elkerülése érdekében töltse be előre a képkockákat, és tárolja őket a memóriában, mielőtt a játékciklus elindulna. Ily módon gyorsan elérheti és megjelenítheti a kereteket futás közben, lemezes I/O-ráfordítás nélkül.

Használja a Pygame beépített Sprite és animációs osztályait

A Pygame beépített osztályokat biztosít, mint pl pygame.sprite. Kobold és pygame.sprite. Csoport ami leegyszerűsíti a sprite-ok és animációk kezelését. Ezen osztályok használatával hatékonyabban kezelheti az ütközések észlelését, a csoportfrissítéseket és a renderelést.

Képformátumok optimalizálása

Fontolja meg a képformátumok optimalizálását a jobb teljesítmény érdekében. A Pygame különféle képformátumokat támogat, beleértve a PNG-t és a JPEG-et. A PNG általában átlátszó képekhez ajánlott, míg a JPEG az átlátszóság nélküli statikus képekhez.

Kísérletezzen különböző képformátumokkal és tömörítési szintekkel, hogy megtalálja az optimális egyensúlyt a képminőség és a fájlméret között.

Használjon megfelelő képkockasebességet

A zökkenőmentes animációk eléréséhez fontos a megfelelő képkockasebességet beállítani. A Pygame biztosítja a pygame.time. Óra osztály, amely a játékhurok sebességének szabályozásával segít a képkockasebesség szabályozásában.

Felhívva a ketyegés() Az Óra objektum metódusával minden iteráció végén konzisztens képkockasebességet tarthat fenn. Állítsa be a képkockasebességet az animációk összetettsége és a célplatform teljesítménye alapján.

Ha követi ezeket a bevált módszereket, optimalizálhatja az animáció megvalósítását, javíthatja játékai teljesítményét, és vizuálisan tetszetős és lebilincselő élményeket teremthet a játékosok számára.

Tedd szórakoztatóbbá a játékokat animációkkal

Animáció hozzáadása a játékokhoz nagyban javíthatja az általános játékos élményt. Az animációk életre keltik a karaktereket és tárgyakat, simábbá és vonzóbbá téve a mozdulatokat. Legyen szó ugráló karakterről, támadó ellenségről vagy tárgyak interakciójáról, az animációk magával ragadóbbá és látványosabbá teszik a játékvilágot.

A Pygame animációs képességeinek kihasználásával elbűvölheti játékosait, és olyan játékokat készíthet, amelyek maradandó benyomást keltenek.