Pythonin Arcade-kirjasto kattaa sinut yksinkertaisimmista väripohjaisista animaatioista monimutkaisiin hiukkasten mallintamiseen.

Animaatiolla on tärkeä rooli videopelien visuaalisen vetovoiman ja sitoutumisen parantamisessa. Arcade-kirjasto on Python-kehys 2D-pelien luomiseen. Se tarjoaa suoraviivaisen ja tehokkaan tavan sisällyttää animaatioita peliprojekteihisi.

Arcade-kirjaston avulla voit luoda perusliikeanimaatioita ja synkronoituja animaatioita pelitapahtumien kanssa.

Luo yksinkertainen peli

Ennen kuin aloitat, varmista, että sinulla on pip asennettuna laitteellesi. Käytä tätä komentoa asentaaksesi arcade-kirjaston:

pip asennus arcade

Luo sen jälkeen Python-tiedosto nimeltä simple-game.py ja aloita perustamalla peli, jossa pelaaja voi liikkua vasemmalle ja oikealle.

Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.

Arcade-kirjaston avulla voit luoda ikkunan, määrittää peliympäristön ja käsitellä pelaajan syötteitä. Tässä koodinpätkä aloittaaksesi:

tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minun pelini")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2

defon_draw(itse):
arcade.start_render()
col = arcade.color. SININEN
arcade.draw_circle_filled (self.player_x, self.player_y, 20, sarake)

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= 10
elif avain == arcade.key. OIKEALLA:
self.player_x += 10

defpää():
peli = OmaPeli()
arcade.run()

jos __nimi__ == "__main__":
pää()

Lisää perusliikeanimaatio

Vie nyt peliäsi askel pidemmälle ja lisää perusliikeanimaatio pelaajaobjektiin. Animoidaksesi pelaaja liikkeessä, luo 3 erilaista ympyrää ja toista niiden välillä peräkkäin, kun pelaaja alkaa liikkua. Tässä on päivitetty koodinpätkä liike-animaatio.py tiedosto:

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minun pelini")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0

defon_draw(itse):
arcade.start_render()
col1 = arcade.color. SININEN
col2 = arcade.color. VIHREÄ
col3 = arcade.color. PUNAINEN

jos self.frame_counter < 10:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,sarake1)
elif self.frame_counter < 20:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,sarake2)
muu:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, sarake3)

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= 10
self.frame_counter = (self.frame_counter + 1) % 30
elif avain == arcade.key. OIKEALLA:
self.player_x += 10
self.frame_counter = (self.frame_counter + 1) % 30

Tässä on esimerkki ulostulokehyksestä:

Animaation nopeuden ja suunnan hallinta

Voit hallita animaation nopeutta ottamalla käyttöön kuvataajuusjärjestelmän. Voit myös muuttaa kehysten järjestystä pelaajan liikesuunnan mukaan. Kun soitin liikkuu vasemmalta oikealle, kehykset näkyvät käänteisessä järjestyksessä.

Tässä on muokattu koodinpätkä frame-rate.py tiedosto:

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minun pelini")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0
col1 = arcade.color. SININEN
col2 = arcade.color. VIHREÄ
col3 = arcade.color. PUNAINEN
self.frames = [sara1, sarake2, sarake3]
self.frame_rate = 10

defon_draw(itse):
arcade.start_render()
frame_index = self.frame_counter // self.frame_rate % len (self.frames)

jos self.player_x < SCREEN_WIDTH // 2:
frame_index = len (self.frames) - 1 - frame_index

indeksi = self.frames[frame_index]
arcade.draw_circle_filled (self.player_x, self.player_y, 20, indeksi)

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= 10
self.frame_counter += 1
elif avain == arcade.key. OIKEALLA:
self.player_x += 10
self.frame_counter += 1

Käytä moduulioperaattoria % kanssa len (self.frames) varmistaaksesi, että frame_index pysyy aina käytettävissä olevien kehysten sisällä. Tämä estää IndexError siitä, kun animaatio kiertää kehysten läpi.

Säädä ruudunpäivitysnopeus arvoa ohjataksesi animaation nopeutta ja nauttiaksesi peliobjektien animoidusta liikkeestä.

Sisältää lisäominaisuuksia

Arcade-kirjasto tarjoaa erilaisia ​​ominaisuuksia animaatioiden parantamiseksi.

Partikkeliefektit

Voit luoda hiukkastehosteita, kuten räjähdyksiä tai savua, lisätäksesi peliisi realistisuutta. Luo tiedosto nimeltä hiukkanen.py ja lisää alla oleva koodi yksinkertaista hiukkasjärjestelmän toteutusta varten Pythonilla ja arcade-kirjastolla:

tuonti pelihalli
tuonti satunnainen

# Näytön mitat
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

#Värit
VALKOINEN = (255, 255, 255)

# Hiukkasluokka
luokkaaHiukkanen:
def__sen sisällä__(itse, x, y, dx, dy, säde, väri, käyttöikä):
itse.x = x
itse.y = y
itse.dx = dx
itse.dy = dy
self.radius = säde
itse.väri = väri
self.lifespan = elinikä

defpäivittää(itse):
itse.x += itse.dx
self.y += self.dy
itse.elinikä -= 1

defpiirtää(itse):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)

# Peliluokka
luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus, "hiukkasesimerkki")
self.particles = []

defperustaa(itse):
# Luo hiukkasia
varten _ sisään range(100):
x = satunnainen.randrange (SCREEN_WIDTH)
y = satunnainen.randrange (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
säde = random.uniform(2, 5)
väri = arcade.color. VALKOINEN
elinikä = random.randint(60, 120)
hiukkanen = hiukkanen (x, y, dx, dy, säde, väri, käyttöikä)
self.partticles.apppend (hiukkanen)

defon_draw(itse):
arcade.start_render()
varten hiukkanen sisään itse.hiukkaset:
hiukkanen.draw()

defpäivittää(itse, delta_aika):
varten hiukkanen sisään itse.hiukkaset:
particle.update()

jos hiukkanen.elinikä <= 0:
self.particles.remove (hiukkanen)

defpää():
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

jos __nimi__ == "__main__":
pää()

Sinun pitäisi nähdä animaatio, joka sisältää monia liikkuvia hiukkasia:

Interaktiiviset animaatiot

Toteuta interaktiivisia animaatioita, jotka vastaavat käyttäjän syötteisiin tai pelitapahtumiin. Esimerkiksi kun pelaaja on vuorovaikutuksessa kohteen kanssa, se voi animoida, muuttaa väriä tai muuntua jollain tavalla. Nämä interaktiiviset animaatiot antavat palautetta ja lisäävät pelaajan sitoutumista peliin. Tässä on koodi tälle interactive-animation.py tiedosto:

tuonti pelihalli

# Näytön mitat
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

#Värit
VALKOINEN = (255, 255, 255)
PUNAINEN = (255, 0, 0)

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus, "Interaktiivinen animaatio")
self.player_x = 400
self.player_y = 300
self.player_radius = 30
self.player_color = PUNAINEN
self.animation_radius = 60
self.animation_color = VALKOINEN
self.animation_active = Väärä

defon_draw(itse):
arcade.start_render()

arcade.draw_circle_filled (self.player_x,
self.player_y,
self.player_radius,
self.player_color)

jos self.animation_active:
arcade.draw_circle_filled (self.player_x,
self.player_y,
self.animation_radius,
self.animation_color)

defon_mouse_press(itse, x, y, painike, muokkaajat):
jos (self.player_x - self.player_radius <=
x <= self.player_x + self.player_radius ja
self.player_y - self.player_radius <=
y <= self.player_y + self.player_radius
):
self.animation_active = Totta

defpäivittää(itse, delta_aika):
jos self.animation_active:
self.animation_radius += 1

jos self.animation_radius > 100:
self.animation_active = Väärä
self.animation_radius = 0

defpää():
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

jos __nimi__ == "__main__":
pää()

Ohita tarvittavat menetelmät, kuten on_draw, on_mouse_press, ja päivittää, soittimen ja animaation piirtämiseen, hiiren napsautusten käsittelyyn ja animaation päivittämiseen.

Piirrä soitin käyttämällä arcade.draw_circle_filled toiminto, joka vie (x, y) Keskustan koordinaatit, säde ja väri argumentteina. Draw_circle_filled-funktio on yksi Arcaden työkalut, joita voit käyttää pelien resurssien piirtämiseen. Tässä tapauksessa voit piirtää kasvavan ympyrän muuttamalla sädettä ajan myötä.

The on_mouse_press menetelmä suoritetaan, kun käyttäjä napsauttaa hiirtä. Se tarkistaa, ovatko hiiren koordinaatit pelaajaobjektin rajoissa, ja aktivoi animaation, jos ovat.

Animaatioiden lisäämisen parhaat käytännöt

Kun lisäät animaatioita peleihin, ota huomioon seuraavat parhaat käytännöt:

Rajoita animaatioiden määrää

Monien animaatioiden käyttö useilla kehyksillä voi vaikuttaa suorituskykyyn. Harkitse vaadittavien animaatioiden tai kehysten määrän minimoimista, erityisesti ei-kriittisten elementtien kohdalla pelissä. Animaatioiden yksinkertaistaminen voi auttaa ylläpitämään tasaisen kuvanopeuden ja optimoimaan resurssien käytön.

Erärenderöi samankaltaisia ​​objekteja

Ryhmittele samanlaiset objektit, joilla on samat animaatiokehykset ja pintakuviot, ja renderöi ne eränä. Eräkäyttö vähentää arvontakutsujen määrää, mikä parantaa suorituskykyä. Tämä tekniikka on erityisen hyödyllinen animoitaessa objekteja, jotka käyttävät samaa sprite-arkkia tai joilla on samanlaisia ​​animaatiojaksoja.

Käytä interpolointia tasaiseen animaatioon

Käytä interpolointitekniikoita, kuten lineaarista interpolointia (lerping), saavuttaaksesi sujuvat animaatiosiirtymät. Interpolointi laskee väliarvot animaation avainkehysten välillä luodakseen sulavia liikkeitä. Tämä lähestymistapa estää äkilliset hyppyt tai nykivät liikkeet kehysten välillä, mikä johtaa visuaalisesti houkuttelevampiin animaatioihin.

Harkitse animaation nopeutta ja ajoitusta

Kokeile erilaisia ​​animaationopeuksia ja ajoituksia löytääksesi oikean tasapainon pelillesi. Säädä ruudun kestoa tai käytä erilaisia ​​animaatiosarjoja luodaksesi vaihteluita nopeuteen, kiihtyvyyteen tai hidastumiseen. Nämä säädöt voivat lisätä pelisi animaatioihin syvyyttä ja luonnetta.

Testaa ja optimoi

Testaa animaatioita säännöllisesti eri laitteilla ja seuraa suorituskykyä. Etsi mahdollisia pullonkauloja tai hidastuksia ja optimoi niiden mukaan. Tämä prosessi auttaa varmistamaan sujuvan ja johdonmukaisen animaatiokokemuksen useilla eri laitteilla.

Tee peleistä kiinnostavampia animaatioiden avulla

Animaatioiden lisääminen peleihin voi merkittävästi parantaa pelaajien sitoutumista ja uppoutumista. Animaatiot antavat visuaalista palautetta pelaajien toimista, mikä tekee pelaamisesta intuitiivisempaa ja nautinnollisempaa. Ne herättävät pelimaailmat henkiin ja luovat realismin ja jännityksen tunteen.

Olipa kyseessä juokseva hahmo, räjähtävä esine tai yksinkertainen siirtymäefekti, animaatiot tekevät pelikokemuksesta dynaamisemman ja kiehtovamman.