Animatsioonita Pygame'i projektid võivad olla uskumatult igavad. Suurendage oma mängude atraktiivsust, lisades kaasakiskuvaid animatsioone.

Animatsioon on mänguarenduse oluline aspekt, mis toob teie loomingusse elu ja dünaamilisust. Animatsioone lisades saate luua oma mängijatele põnevaid visuaale ja kaasahaaravat mängukogemust.

Pygame pakub laiaulatuslikku tööriistakomplekti, mis lihtsustab animatsioonide loomise protsessi. Sellel on sisseehitatud funktsioonid, sealhulgas kaadrite laadimine ja kuvamine, animatsioonide juhtimine mängija sisendiga ja nii edasi.

Looge lihtne mäng

Alustage lihtsa mängu loomisega, mis võimaldab mängijal vasakule ja paremale liikuda. Saate mängule lisada ka platvormi.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Looge uus fail lihtne-mäng.py ja määratlege mõned muutujad, sealhulgas mängija ja platvormi algsed asukohad ja kiirused. Neid muutujaid kasutatakse mängija spraidi liikumise juhtimiseks.

instagram viewer

Käsitsege mängija sisendit, hankides klaviatuuri oleku, kasutades pygame.key.get_pressed(). Kui vajutate vasakut nooleklahvi, saate väärtust vähendada mängija_x, ja kui vajutate paremnooleklahvi, saate seda suurendada. See loob mängija spraidi jaoks liikumise efekti.

Teie esialgne mäng peaks välja nägema järgmine:

Raamide laadimine ja kuvamine

Animatsioonide loomiseks laadida ja kuvada erinevaid pilte või animatsiooni kaadreid. Iga kaader esindab konkreetset pilti või spraiti, mis kuvatakse liikumise illusiooni tekitamiseks järjestuses. Oletame, et teil on kolm kaadrit: raam0, raam1ja raam2. Esialgu saate kuvada raam0.

Looge uus fail nimega anim.py ja lisage kood koos allolevate värskendustega:


# Laadige raamid
raam0 = mängumäng. Surface((20, 20))
frame0.fill((255, 0, 0))

raam1 = mängumäng. Surface((20, 20))
frame1.fill((0, 255, 0))

raam2 = mängumäng. Surface((20, 20))
frame2.fill((0, 0, 255))

# Määrake esialgne kaader
praegune_kaader = kaader0

# Mängutsükkel
samal ajal jooksmine:
# ...

# Renderdage mäng
# ...
screen.blit (praegune_kaader, (mängija_x, mängija_y))

pygame.display.flip()

# ...

Animatsioonide juhtimine mängija sisendiga

Mängija spraidi animeerimiseks saate mängija sisendi põhjal lülituda erinevate kaadrite vahel. Näiteks kui mängija liigub nooleklahve kasutades vasakule või paremale, saate liikumise illusiooni loomiseks kaadrite vahel itereerida.

# Mängutsükkel
samal ajal jooksmine:
# ...

# Käsitlege mängija sisendit
võtmed = pygame.key.get_pressed()
kui võtmed[pygame. K_LEFT]:
mängija_x - = mängija_kiirus
praegune_kaader = kaader1
elif võtmed[pygame. K_RIGHT]:
mängija_x += mängija_kiirus
praegune_kaader = kaader2
muidu:
praegune_kaader = kaader0

# Renderdage mäng
# ...
screen.blit (praegune_kaader, (mängija_x, mängija_y))

pygame.display.flip()

# ...

Allpool on väljund:

Kaasa arvatud lisafunktsioonid

Lisaks põhilistele animatsioonifunktsioonidele pakub Pygame mitmeid lisafunktsioone, et täiustada teie mänguarenduskogemust.

Sprite-lehed

Üksikute kaadrite laadimise asemel saate kasutada sprite-lehti, mis sisaldavad ühel pildil mitut kaadrit. Pygame pakub funktsioone sprite-lehe konkreetsete piirkondade eraldamiseks ja kuvamiseks. Siin on näide:

# Laadige sprite-lehe pilt
sprite_sheet = pygame.image.load("spritesheet.png")

# Määrake iga kaadri mõõtmed
raami_laius = 32
raami_kõrgus = 32

# Funktsioon sprite lehelt kaadrite eraldamiseks
defväljavõte_raamid(leht, raami_laius, raami_kõrgus):
# kood kaadrite eraldamiseks

# Ekstraheerige sprite lehelt raamid
raamid = väljavõte_kaadrid (sprite_sheet, frame_width, frame_height)

# Kuva raam sprite lehelt
praegune_raam = kaadrid[0]

# Mängutsükkel
samal ajal jooksmine:
# ...
screen.blit (praegune_kaader, (mängija_x, mängija_y))
# ...

Animatsiooni kiirus

Saate oma animatsioonide kiirust juhtida, lisades kaadrite värskenduste vahele viivitusi. See võimaldab sujuvat ja realistlikku liikumist. Siin on näide sellest, kuidas saate animatsiooni kiirust juhtida kasutades aega moodul:

# Animatsiooni kiiruse muutujad
animation_delay = 100# Viivitus millisekundites kaadri värskendamise vahel
last_frame_time = pygame.time.get_ticks()

# Mängutsükkel
samal ajal jooksmine:
# ...

# Kontrollige, kas raami värskendamiseks on möödunud piisavalt aega
praeguse_aeg = pygame.time.get_ticks()
kui praegune_aeg – viimase kaadri_aeg >= animatsiooni_viivitus:
# Värskendage raami

# Renderdage mäng
# ...
screen.blit (praegune_kaader, (mängija_x, mängija_y))

pygame.display.flip()

Kokkupõrke tuvastamine

Pygame pakub kokkupõrke tuvastamise funktsioone, et tuvastada interaktsioone animeeritud objektide vahel, näiteks tuvastab, kui mängija põrkab platvormiga. Siin on näide, kuidas lisada oma mängu kokkupõrketuvastus.

# Kokkupõrke tuvastamine
defcheck_collision(pleier_rect, platform_rect):
kui player_rect.colliderect (platform_rect):
# Toimus kokkupõrge
tagasiTõsi
muidu:
tagasiVale

# Mängutsükkel
samal ajal jooksmine:
# ...

# Tehke kokkupõrke tuvastamine
player_rect = mängumäng. Rect (mängija_x, mängija_y, 20, 20)
platform_rect = pygame. Rect (platvorm_x, platvorm_y,
platvormi_laius, platvormi_kõrgus)

kui check_collision (player_rect, platform_rect):
# Käsitsege kokkupõrget

# Renderdage mäng
# ...
screen.blit (praegune_kaader, (mängija_x, mängija_y))

pygame.display.flip()

Neid lisafunktsioone kasutades saate laiendada oma mänguarendusvõimalusi ning luua dünaamilisemaid ja kaasahaaravamaid mängukogemusi. Katsetage erinevaid tehnikaid, kombineerige neid loominguliselt ja laske oma kujutlusvõimel end tõeliselt köitvate mängude tegemisel juhtida.

Pygame'is animatsiooni loomise parimad tavad

Animatsiooni lisamisel Pygame'i projektidesse on oluline järgida mõningaid parimaid tavasid, et optimeerida oma juurutamist ning tagada sujuv ja tõhus animatsioon. Kaaluge järgmisi juhiseid:

Eellaadige ja salvestage raamid mällu

Piltide laadimine kettalt mängutsükli ajal võib põhjustada viivitusi ja mõjutada jõudlust. Selle vältimiseks laadige oma raamid eellaadimiseks ja salvestage need mällu enne mängutsükli algust. Nii pääsete raamidele kiiresti juurde ja kuvage neid käitusajal ilma ketta sisend-/väljundkuludeta.

Kasutage Pygame'i sisseehitatud Sprite'i ja animatsiooni klasse

Pygame pakub sisseehitatud klasse nagu pygame.sprite. Sprite ja pygame.sprite. Grupp mis lihtsustab spraitide ja animatsioonide haldamist. Neid klasse kasutades saate tõhusamalt hallata kokkupõrgete tuvastamist, rühmavärskendusi ja renderdamist.

Pildivormingute optimeerimine

Kaaluge oma pildivormingute optimeerimist parema jõudluse saavutamiseks. Pygame toetab erinevaid pildivorminguid, sealhulgas PNG ja JPEG. PNG-d on üldiselt soovitatav kasutada läbipaistvate piltide jaoks, samas kui JPEG sobib staatiliste ilma läbipaistvuseta piltide jaoks.

Pildikvaliteedi ja faili suuruse optimaalse tasakaalu leidmiseks katsetage erinevate pildivormingute ja tihendustasemetega.

Kasutage õiget kaadrisagedust

Sujuvate animatsioonide saavutamiseks on oluline määrata sobiv kaadrisagedus. Pygame pakub pygame.time. Kell klass, mis aitab kontrollida kaadrisagedust, reguleerides mängutsükli kiirust.

Helistades linnuke () Objekti Kell meetod iga iteratsiooni lõpus, saate säilitada ühtse kaadrisageduse. Reguleerige kaadrisagedust vastavalt oma animatsioonide keerukusele ja sihtplatvormi jõudlusvõimalustele.

Neid parimaid tavasid järgides saate optimeerida oma animatsiooni rakendamist, parandada mängude jõudlust ning luua oma mängijatele visuaalselt atraktiivseid ja kaasahaaravaid kogemusi.

Muutke mängud animatsioonidega lõbusamaks

Animatsiooni lisamine mängudele võib oluliselt parandada mängija üldist kogemust. Animatsioonid äratavad tegelased ja objektid ellu, muutes liikumised sujuvamaks ja kaasahaaravamaks. Olenemata sellest, kas tegemist on hüppavate tegelaste, vaenlaste ründamise või vastastikust objektidega, muudavad animatsioonid teie mängumaailma kaasahaaravamaks ja visuaalselt atraktiivsemaks.

Kasutades Pygame'i animatsioonivõimalusi, saate oma mängijaid võluda ja luua mänge, mis jätavad püsiva mulje.