„Pygame“ projektai, kuriuose trūksta animacijos, gali būti neįtikėtinai nuobodūs. Padidinkite savo žaidimų patrauklumą įtraukdami patrauklių animacijų.

Animacija yra labai svarbus žaidimo kūrimo aspektas, suteikiantis gyvybės ir dinamiškumo jūsų kūriniams. Įtraukdami animaciją, galite sukurti patrauklius vaizdus ir įtraukiančius žaidimo potyrius savo žaidėjams.

Pygame pateikia išsamų įrankių rinkinį, kuris supaprastina animacijų kūrimo procesą. Jame yra integruotų funkcijų, įskaitant kadrų įkėlimą ir rodymą, animacijos valdymą naudojant grotuvo įvestį ir pan.

Sukurkite paprastą žaidimą

Pradėkite kurdami paprastą žaidimą, leidžiantį žaidėjui judėti į kairę ir į dešinę. Taip pat galite pridėti platformą prie žaidimo.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Sukurkite naują failą paprastas žaidimas.py ir apibrėžkite kai kuriuos kintamuosius, įskaitant pradines žaidėjo ir platformos pozicijas ir greitį. Šie kintamieji bus naudojami žaidėjo sprito judėjimui valdyti.

instagram viewer

Tvarkykite grotuvo įvestį, naudodami klaviatūros būseną pygame.key.get_pressed(). Jei paspaudžiamas kairysis rodyklės klavišas, galite sumažinti reikšmę žaidėjas_x, o jei paspaudžiamas rodyklės dešinėn klavišas, galite jį padidinti. Taip sukuriamas žaidėjo sprite judėjimo efektas.

Jūsų pradinis žaidimas turėtų atrodyti taip:

Įkeliami ir rodomi rėmeliai

Norėdami sukurti animaciją, įkelti ir rodyti skirtingus vaizdus arba animacijos kadrai. Kiekvienas kadras žymi konkretų vaizdą arba sprite, kuris bus rodomas seka, kad būtų sukurta judesio iliuzija. Tarkime, kad turite tris kadrus: rėmas0, rėmas1, ir rėmas2. Iš pradžių galite rodyti rėmas0.

Sukurkite naują failą pavadinimu animuoti.py ir pridėkite kodą su toliau pateiktais atnaujinimais:


# Įkelkite rėmelius
kadras0 = pygame. Paviršius((20, 20))
frame0.fill((255, 0, 0))

kadras1 = pygame. Paviršius((20, 20))
frame1.fill((0, 255, 0))

kadras2 = pygame. Paviršius((20, 20))
frame2.fill((0, 0, 255))

# Nustatyti pradinį kadrą
dabartinis_kadras = kadras0

# Žaidimo kilpa
kol veikia:
# ...

# Pateikite žaidimą
# ...
screen.blit (dabartinis_kadras, (player_x, player_y))

pygame.display.flip()

# ...

Animacijų valdymas naudojant grotuvo įvestį

Norėdami animuoti žaidėjo sprite, galite perjungti skirtingus kadrus pagal grotuvo įvestį. Pavyzdžiui, kai žaidėjas juda į kairę arba dešinę rodyklių klavišais, galite kartoti tarp kadrų, kad sukurtumėte judėjimo iliuziją.

# Žaidimo kilpa
kol veikia:
# ...

# Valdykite grotuvo įvestį
klavišai = pygame.key.get_pressed()
jeigu raktai[pygame. K_LEFT]:
žaidėjas_x - = žaidėjo_greitis
dabartinis_kadras = kadras1
elifas raktai[pygame. K_RIGHT]:
žaidėjas_x += grotuvo_greitis
dabartinis_kadras = kadras2
Kitas:
dabartinis_kadras = kadras0

# Pateikite žaidimą
# ...
screen.blit (dabartinis_kadras, (player_x, player_y))

pygame.display.flip()

# ...

Žemiau yra išvestis:

Įskaitant papildomas funkcijas

Be pagrindinių animacijos funkcijų, Pygame siūlo keletą papildomų funkcijų, kurios pagerins jūsų žaidimų kūrimo patirtį.

Sprite lapeliai

Užuot įkelę atskirus kadrus, galite naudoti sprite lapus, kuriuose yra keli kadrai viename vaizde. „Pygame“ teikia funkcijas, skirtas išgauti ir rodyti konkrečias „Sprite“ lapo sritis. Štai pavyzdys:

# Įkelkite sprite lapo vaizdą
sprite_sheet = pygame.image.load("spritesheet.png")

# Apibrėžkite kiekvieno kadro matmenis
rėmo_plotis = 32
rėmo_aukštis = 32

# Funkcija išgauti kadrus iš sprite lapo
defekstrakto_kadrai(lapas, rėmo_plotis, rėmo_aukštis):
# kodas kadrams išgauti

# Ištraukite rėmelius iš sprite lapo
rėmeliai = ekstrakto_kadrai (sprite_sheet, frame_width, frame_height)

# Rodyti kadrą iš sprite lapo
current_frame = kadrai[0]

# Žaidimo kilpa
kol veikia:
# ...
screen.blit (dabartinis_kadras, (player_x, player_y))
# ...

Animacijos greitis

Galite valdyti animacijų greitį įvesdami laiko delsą tarp kadrų atnaujinimų. Tai leidžia sklandžiai ir tikroviškai judėti. Štai pavyzdys, kaip galite valdyti animacijos greitį naudojant laikas modulis:

# Animacijos greičio kintamieji
animation_delay = 100# Vėlavimas milisekundėmis tarp kadrų atnaujinimų
last_frame_time = pygame.time.get_ticks()

# Žaidimo kilpa
kol veikia:
# ...

# Patikrinkite, ar praėjo pakankamai laiko atnaujinti kadrą
current_time = pygame.time.get_ticks()
jeigu current_time – last_frame_time >= animation_delay:
# Atnaujinkite rėmelį

# Pateikite žaidimą
# ...
screen.blit (dabartinis_kadras, (player_x, player_y))

pygame.display.flip()

Susidūrimo aptikimas

Pygame siūlo susidūrimų aptikimo funkcijas, skirtas aptikti sąveiką tarp animuotų objektų, pvz aptikti, kada žaidėjas susiduria su platforma. Štai pavyzdys, kaip į žaidimą įtraukti susidūrimo aptikimą:

# Susidūrimo aptikimas
defcheck_collision(player_rect, platform_rect):
jeigu player_rect.colliderect (platform_rect):
# Įvyko susidūrimas
grąžintiTiesa
Kitas:
grąžintiNetiesa

# Žaidimo kilpa
kol veikia:
# ...

# Atlikite susidūrimo aptikimą
player_rect = pygame. Tiesiai (žaidėjas_x, žaidėjas_y, 20, 20)
platform_rect = pygame. Tiesiai (platforma_x, platforma_y,
platformos_plotis, platformos_aukštis)

jeigu check_collision (player_rect, platform_rect):
# Valdykite susidūrimą

# Pateikite žaidimą
# ...
screen.blit (dabartinis_kadras, (player_x, player_y))

pygame.display.flip()

Naudodamiesi šiomis papildomomis funkcijomis galite išplėsti savo žaidimų kūrimo galimybes ir sukurti dinamiškesnę bei įtraukesnę žaidimų patirtį. Eksperimentuokite su įvairiomis technikomis, kūrybiškai jas derinkite ir leiskite savo vaizduotei vadovauti kuriant tikrai patrauklius žaidimus.

Geriausia animacijos kūrimo „Pygame“ praktika

Pridedant animaciją prie savo Pygame projektų, svarbu vadovautis kai kuriomis geriausiomis praktikomis, kad optimizuotumėte diegimą ir užtikrintumėte sklandžią bei veiksmingą animaciją. Apsvarstykite šias gaires:

Iš anksto įkelkite ir išsaugokite kadrus atmintyje

Vaizdų įkėlimas iš disko žaidimo ciklo metu gali vėluoti ir paveikti našumą. Kad to išvengtumėte, iš anksto įkelkite kadrus ir išsaugokite juos atmintyje prieš žaidimo ciklo pradžią. Tokiu būdu galite greitai pasiekti ir rodyti kadrus vykdymo metu be jokių disko įvesties / išvesties išlaidų.

Pasinaudokite „Pygame“ integruotomis „Sprite“ ir animacijos klasėmis

„Pygame“ siūlo tokias integruotas klases kaip pygame.sprite. Sprite ir pygame.sprite. Grupė kuris supaprastina spraitų ir animacijų valdymą. Naudodami šias klases galite efektyviau aptikti susidūrimus, atnaujinti grupes ir atkurti.

Optimizuokite vaizdo formatus

Apsvarstykite galimybę optimizuoti vaizdo formatus, kad pagerintumėte našumą. Pygame palaiko įvairius vaizdo formatus, įskaitant PNG ir JPEG. PNG paprastai rekomenduojamas vaizdams su skaidrumu, o JPEG tinka statiniams be skaidrumo.

Eksperimentuokite su skirtingais vaizdo formatais ir glaudinimo lygiais, kad rastumėte optimalų vaizdo kokybės ir failo dydžio balansą.

Naudokite tinkamą kadrų dažnį

Kad animacija būtų sklandi, svarbu nustatyti tinkamą kadrų dažnį. Pygame suteikia pygame.time. Laikrodis klasė, kuri padeda valdyti kadrų dažnį reguliuojant žaidimo ciklo greitį.

Paskambinus į varnele () Naudodami objekto Laikrodis metodą kiekvienos iteracijos pabaigoje, galite išlaikyti pastovų kadrų dažnį. Koreguokite kadrų dažnį pagal animacijos sudėtingumą ir tikslinės platformos našumo galimybes.

Vadovaudamiesi šiais geriausios praktikos pavyzdžiais galite optimizuoti animacijos diegimą, pagerinti žaidimų našumą ir sukurti vizualiai patrauklią bei patrauklią savo žaidėjų patirtį.

Padarykite žaidimus linksmesnius naudodami animaciją

Animacijos pridėjimas prie žaidimų gali labai pagerinti bendrą žaidėjo patirtį. Animacijos atgaivina personažus ir objektus, todėl judesiai tampa sklandesni ir patrauklesni. Nesvarbu, ar tai veikėjas šokinėja, ar puola priešai, ar sąveikauja objektai, animacijos daro jūsų žaidimų pasaulį įtraukiantį ir vizualiai patrauklesnį.

Naudodami Pygame animacijos galimybes galite sužavėti savo žaidėjus ir sukurti žaidimus, kurie palieka ilgalaikį įspūdį.