Pygame-projektit, joista puuttuu animaatio, voivat olla uskomattoman tylsiä. Paranna pelisi houkuttelevuutta sisällyttämällä mukaan kiehtovia animaatioita.
Animaatio on pelikehityksen tärkeä osa-alue, joka tuo luomuksiisi eloa ja dynaamisuutta. Lisäämällä animaatioita voit luoda pelaajillesi kiehtovia visuaaleja ja mukaansatempaavia pelikokemuksia.
Pygame tarjoaa kattavan joukon työkaluja, jotka yksinkertaistavat animaatioiden luomista. Se tarjoaa sisäänrakennettuja ominaisuuksia, kuten kehysten lataamisen ja näyttämisen, animaatioiden ohjaamisen soittimen syötteellä ja niin edelleen.
Luo yksinkertainen peli
Aloita luomalla yksinkertainen peli, jonka avulla pelaaja voi liikkua vasemmalle ja oikealle. Voit myös lisätä peliin alustan.
Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
Luo uusi tiedosto simple-game.py ja määritä joitain muuttujia, mukaan lukien soittimen ja alustan lähtöpaikat ja nopeudet. Näitä muuttujia käytetään ohjaamaan pelaajan spriten liikettä.
Käsittele soittimen syötettä hakemalla näppäimistön tila käyttämällä pygame.key.get_pressed(). Jos painat vasenta nuolinäppäintä, voit pienentää arvoa pelaaja_x, ja jos oikeaa nuolinäppäintä painetaan, voit suurentaa sitä. Tämä luo liikeefektin pelaajan spritille.
Alkupelisi pitäisi näyttää tältä:
Kehysten lataaminen ja näyttäminen
Luodaksesi animaatioita, ladata ja näyttää erilaisia kuvia tai animaation kehyksiä. Jokainen kehys edustaa tiettyä kuvaa tai spriteä, joka näytetään järjestyksessä liikkeen illuusion luomiseksi. Oletetaan, että sinulla on kolme kehystä: kehys0, kehys 1, ja kehys 2. Aluksi voit näyttää kehys0.
Luo uusi tiedosto nimeltä anim.py ja lisää koodi alla olevilla päivityksillä:
# Lataa kehyksiä
frame0 = pygame. Pinta((20, 20))
frame0.fill((255, 0, 0))kehys1 = pygame. Pinta((20, 20))
frame1.fill((0, 255, 0))kehys2 = pygame. Pinta((20, 20))
frame2.fill((0, 0, 255))# Aseta alkukehys
nykyinen_kehys = kehys0# Pelisilmukka
sillä aikaa käynnissä:
# ...# Renderöi peli
# ...
screen.blit (nykyinen_kehys, (soitin_x, pelaaja_y))pygame.display.flip()
# ...
Animaatioiden hallinta Playerin tulolla
Animoidaksesi pelaajan spriten voit vaihtaa eri kehysten välillä pelaajan syötteen perusteella. Esimerkiksi kun pelaaja liikkuu vasemmalle tai oikealle nuolinäppäimillä, voit iteroida kehysten välillä luodaksesi illuusion liikkeestä.
# Pelisilmukka
sillä aikaa käynnissä:
# ...# Käsittele soittimen syöttöä
avaimet = pygame.key.get_pressed()
jos avaimet[pygame. K_LEFT]:
pelaaja_x - = pelaajan_nopeus
nykyinen_kehys = kehys1
elif avaimet[pygame. K_RIGHT]:
player_x += player_speed
nykyinen_kehys = kehys2
muu:
nykyinen_kehys = kehys0# Renderöi peli
# ...
screen.blit (nykyinen_kehys, (soitin_x, pelaaja_y))pygame.display.flip()
# ...
Alla on tulos:
Sisältää lisäominaisuuksia
Perusanimaatiotoimintojen lisäksi Pygame tarjoaa useita lisäominaisuuksia, jotka parantavat pelinkehityskokemustasi.
Sprite-arkit
Yksittäisten kehysten lataamisen sijaan voit käyttää sprite-arkkeja, jotka sisältävät useita kehyksiä yhdessä kuvassa. Pygame tarjoaa toimintoja sprite-arkin tiettyjen alueiden poimimiseen ja näyttämiseen. Tässä on esimerkki:
# Lataa sprite-arkin kuva
sprite_sheet = pygame.image.load("spritesheet.png")# Määritä kunkin kehyksen mitat
frame_width = 32
kehyksen_korkeus = 32# Toiminto kehysten poimimiseksi sprite-arkista
defPura_kehykset(arkki, kehyksen_leveys, kehyksen_korkeus):
# koodi kehysten purkamiseen# Poimi kehykset sprite-arkista
kehykset = poimi_kehykset (sprite_sheet, frame_width, frame_height)# Näytä kehys sprite-arkista
current_frame = kehykset[0]
# Pelisilmukka
sillä aikaa käynnissä:
# ...
screen.blit (nykyinen_kehys, (soitin_x, pelaaja_y))
# ...
Animaationopeus
Voit hallita animaatioidesi nopeutta ottamalla käyttöön aikaviiveitä kehyspäivitysten välillä. Tämä mahdollistaa tasaisen ja realistisen liikkeen. Tässä on esimerkki siitä, kuinka voit hallita animaation nopeutta käyttämällä aika moduuli:
# Animaationopeuden muuttujat
animation_delay = 100# Viive millisekunteina kehyspäivitysten välillä
last_frame_time = pygame.time.get_ticks()# Pelisilmukka
sillä aikaa käynnissä:
# ...# Tarkista, onko tarpeeksi aikaa kulunut kehyksen päivittämiseen
nykyinen_aika = pygame.time.get_ticks()
jos nykyinen_aika - last_frame_time >= animation_delay:
# Päivitä kehys# Renderöi peli
# ...
screen.blit (nykyinen_kehys, (soitin_x, pelaaja_y))
pygame.display.flip()
Törmäyksen tunnistus
Pygame tarjoaa törmäyksentunnistustoimintoja, jotka havaitsevat animoitujen objektien välisiä vuorovaikutuksia, kuten havaitsee, kun pelaaja törmää alustaan. Tässä on esimerkki siitä, kuinka voit sisällyttää törmäyksentunnistuksen peliisi:
# Törmäyksen tunnistus
defcheck_collision(soitin_suora, alusta_suora):
jos player_rect.colliderect (platform_rect):
# Törmäys tapahtui
palataTotta
muu:
palataVäärä# Pelisilmukka
sillä aikaa käynnissä:
# ...# Suorita törmäyksen tunnistus
player_rect = pygame. Suora (pelaajax, pelaaja_y, 20, 20)
platform_rect = pygame. Suora (platform_x, platform_y,
alustan_leveys, alustan_korkeus)jos check_collision (player_rect, platform_rect):
# Käsittele törmäystä# Renderöi peli
# ...
screen.blit (nykyinen_kehys, (soitin_x, pelaaja_y))
pygame.display.flip()
Hyödyntämällä näitä lisäominaisuuksia voit laajentaa pelinkehityskykyäsi ja luoda dynaamisempia ja mukaansatempaavampia pelikokemuksia. Kokeile erilaisia tekniikoita, yhdistä niitä luovasti ja anna mielikuvituksesi ohjata sinua luomaan todella mukaansatempaavia pelejä.
Parhaat käytännöt animaation luomiseen Pygamessa
Kun lisäät animaatioita Pygame-projekteihisi, on tärkeää noudattaa joitain parhaita käytäntöjä toteutuksesi optimoimiseksi ja sujuvan ja tehokkaan animaation varmistamiseksi. Harkitse seuraavia ohjeita:
Esilataa ja tallenna kehyksiä muistiin
Kuvien lataaminen levyltä pelisilmukan aikana voi aiheuttaa viiveitä ja vaikuttaa suorituskykyyn. Tämän välttämiseksi esilataa kehyksesi ja tallenna ne muistiin ennen pelikierron alkamista. Tällä tavalla voit nopeasti käyttää ja näyttää kehyksiä ajon aikana ilman levyn I/O-ylimäärää.
Käytä Pygamen sisäänrakennettuja Sprite- ja animaatioluokkia
Pygame tarjoaa sisäänrakennettuja luokkia, kuten pygame.sprite. Sprite ja pygame.sprite. Ryhmä joka yksinkertaistaa spritien ja animaatioiden hallintaa. Näitä luokkia käyttämällä voit käsitellä törmäysten havaitsemista, ryhmäpäivityksiä ja renderöimistä tehokkaammin.
Optimoi kuvamuodot
Harkitse kuvamuotojen optimointia suorituskyvyn parantamiseksi. Pygame tukee useita kuvaformaatteja, mukaan lukien PNG ja JPEG. PNG: tä suositellaan yleensä läpinäkyville kuville, kun taas JPEG sopii staattisille kuville ilman läpinäkyvyyttä.
Kokeile eri kuvaformaatteja ja pakkaustasoja löytääksesi optimaalisen tasapainon kuvanlaadun ja tiedostokoon välillä.
Käytä oikeaa kuvataajuutta
Sujuvien animaatioiden saavuttamiseksi on tärkeää asettaa sopiva kuvataajuus. Pygame tarjoaa pygame.time. Kello luokka, joka auttaa hallitsemaan kuvanopeutta säätelemällä pelisilmukan nopeutta.
Soittamalla puutiainen() Kello-objektin menetelmää kunkin iteraation lopussa, voit ylläpitää tasaista kuvanopeutta. Säädä kuvataajuutta animaatioidesi monimutkaisuuden ja kohdealustasi suorituskyvyn perusteella.
Seuraamalla näitä parhaita käytäntöjä voit optimoida animaatioesi, parantaa pelisi suorituskykyä ja luoda visuaalisesti houkuttelevia ja mukaansatempaavia kokemuksia pelaajillesi.
Tee peleistä hauskempia animaatioilla
Animaatioiden lisääminen peleihin voi parantaa huomattavasti yleistä pelaajakokemusta. Animaatiot herättävät hahmot ja esineet eloon tehden liikkeistä sujuvampia ja kiinnostavampia. Animaatiot tekevät pelimaailmastasi mukaansatempaavamman ja visuaalisesti houkuttelevamman, olipa kyse sitten hahmon hyppäämisestä, vihollisten hyökkäämisestä tai esineiden vuorovaikutuksesta.
Pygamen animaatioominaisuuksia hyödyntämällä voit valloittaa pelaajasi ja luoda pelejä, jotka jättävät pysyvän vaikutuksen.