Voit piristää yksinkertaisimpia pelejä animoiduilla hiukkasilla. Simuloi liikettä, räjähdyksiä ja muuta näiden tekniikoiden avulla.
Pygame on suosittu kirjasto pelien kehittämiseen Pythonilla. Pelien rakentamisen aikana erikoistehosteiden lisääminen voi parantaa huomattavasti pelaajien visuaalista vetovoimaa ja yleistä kokemusta.
Hiukkasjärjestelmät ovat tehokas tekniikka dynaamisten ja visuaalisesti mielenkiintoisten tehosteiden, kuten pölypilvien, räjähdysten, sumujen ja muiden, luomiseen.
Luo yksinkertainen peli
Ennen kuin sukellat hiukkasjärjestelmiin ja visuaalisiin parannuksiin, aloita luomalla yksinkertainen peli Pygamella. Luo uusi tiedosto nimeltä simple-game.py ja aloita tuomalla tarvittavat kirjastot ja alustamalla Pygame. Aseta peli-ikkuna tietylle leveydelle ja korkeudelle.
Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
Pääpelisilmukan sisällä käsittele käyttäjien tapahtumia ja päivitä pelaajan asemaa näppäinpainallusten perusteella. Piirrä suorakulmio käyttävälle pelaajaobjektille pygame.draw.rect().
Päivitä lopuksi peliikkuna käyttämällä pygame.display.flip() ja lopettaa pelin, kun pelaaja poistuu silmukasta. Tämä yksinkertainen peli toimii perustana erikoistehosteiden lisäämiselle hiukkasjärjestelmien avulla.
Sinun pitäisi nähdä valkoinen neliö, joka edustaa pelaajaa, jota voit siirtää vasemmalle ja oikealle:
Erilaisten hiukkastyyppien luominen
Nyt kun sinulla on yksinkertainen pelisi valmiiksi, voit lisätä erilaisia hiukkasjärjestelmiä. Luo hiukkasluokat kullekin tehosteelle ja hiukkasjärjestelmäluokka hiukkasten hallitsemiseksi ja päivittämiseksi.
Hiukkasvaikutus, kun pelaaja liikkuu
Ensimmäinen hiukkasefekti on pölyhiukkasten jälki, joka vapautuu pelaajan selästä, kun pelaaja alkaa siirtää hiiren tai näppäimistön avulla. Lisäksi pölyhiukkasten suunta muuttuu, kun soitin muuttaa suuntaa.
Määrittele a Hiukkanen luokka, joka edustaa yksittäistä hiukkasta. Jokaisella hiukkasella on alkuasema (x ja y), satunnainen nopeus (dx ja dy), ja elinikä, joka määrittää kuinka kauan hiukkanen on olemassa.
Määrittele myös a ParticleSystem luokka, joka hallitsee hiukkaskokoelmaa. Voit lisätä järjestelmään uuden partikkelin käyttämällä add_particle() menetelmä. The päivittää() menetelmä päivittää kaikki järjestelmän hiukkaset ja poistaa hiukkaset, jotka ovat saavuttaneet käyttöikänsä lopun.
# Hiukkasluokka
luokkaaHiukkanen:
def__sen sisällä__(itse, x, y):
itse.x = x
itse.y = y
self.dx = random.uniform(-1, 1)
self.dy = random.uniform(-1, 1)
self.lifetime = 60defpäivittää(itse):
itse.x += itse.dx
self.y += self.dy
self.lifetime -= 1defpiirtää(itse, ikkuna):
väri =(200, 200, 200)
sijainti = (int (self.x), int (self.y))
pygame.draw.circle (ikkuna, väri, sijainti, 2)# Hiukkasjärjestelmän luokka
luokkaaParticleSystem:
def__sen sisällä__(itse):
self.particles = []defadd_hiukkanen(itse, x, y):
self.particles.apppend (hiukkas (x, y))defpäivittää(itse):
varten hiukkanen sisään itse.hiukkaset:
particle.update()jos hiukkanen.elinikä <= 0:
self.particles.remove (hiukkanen)
defpiirtää(itse, ikkuna):
varten hiukkanen sisään itse.hiukkaset:
hiukkanen.piirrä (ikkuna)
Integroidaksesi hiukkasjärjestelmän peliisi, sinun on tehtävä muutamia muutoksia pääpelisilmukkaan. Luo uusi tiedosto nimeltä liike-hiukkaset.py ja lisää koodi alla olevilla päivityksillä:
# Luo hiukkasjärjestelmä
hiukkasjärjestelmä = Hiukkasjärjestelmä()# Pääpelisilmukka
juoksu = Totta
kello = pygame.time. Kello()sillä aikaa käynnissä:
dt = kello.tick(60) / 1000.0varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Väärähiukkanen_y = pelaaja_y + pelaajan_korkeus // 2
hiukkanen_x = pelaaja_x + pelaajan_leveysavaimet = pygame.key.get_pressed()
raja = pelaaja_x < ikkunan_leveys - soittimen_leveysjos avaimet[pygame. K_LEFT] ja pelaaja_x > 0:
pelaaja_x -= 5
hiukkasjärjestelmä.add_hiukkanen (hiukkas_x, hiukkanen_y)jos avaimet[pygame. K_OIKEA] ja raja:
pelaaja_x += 5
hiukkasjärjestelmä.add_hiukkanen (player_x, particle_y)hiukkasjärjestelmä.päivitys()
window.fill (MUSTA)
player_pos = (pelaajax, pelaaja_y, pelaajan_leveys, pelaajan_korkeus)
pygame.draw.rect (ikkuna, VALKOINEN, player_pos)
hiukkasjärjestelmä.piirustus (ikkuna)pygame.display.flip()
# Lopeta peli
pygame.quit()
Kun siirrät pelaajaobjektia nyt, sinun pitäisi nähdä liikettä korostavat hiukkaset:
Blast Effect
Seuraava hiukkasefekti on räjähdysefekti, joka syntyy, kun pelaaja ampuu luodin. Räjähdysvaikutus koostuu punaisista hiukkasista, jotka vapautuvat luodin asennosta.
Määrittele a Hiukkanen luokka on samanlainen kuin edellinen, mutta tällä kertaa sisältää a väri parametri, joka edustaa hiukkasen väriä.
Päivitä myös ParticleSystem luokka käsittelemään uutta hiukkastyyppiä. The add_particle() menetelmä vaatii nyt ylimääräisen väri parametri ja luo hiukkasia määritetyllä värillä.
# Hiukkasluokka
luokkaaHiukkanen:
def__sen sisällä__(itse, x, y, väri):
itse.x = x
itse.y = y
self.dx = random.uniform(-2, 2)
self.dy = random.uniform(-2, 2)
self.lifetime = 30
itse.väri = väridefpäivittää(itse):
itse.x += itse.dx
self.y += self.dy
self.lifetime -= 1defpiirtää(itse, ikkuna):
sijainti = (int (self.x), int (self.y))
pygame.draw.circle (ikkuna, self.color, position, 3)# Hiukkasjärjestelmän luokka
luokkaaParticleSystem:
def__sen sisällä__(itse):
self.particles = []defadd_hiukkanen(itse, x, y, väri):
self.particles.append (hiukkas (x, y, väri)defpäivittää(itse):
varten hiukkanen sisään itse.hiukkaset:
particle.update()jos hiukkanen.elinikä <= 0:
self.particles.remove (hiukkanen)
defpiirtää(itse, ikkuna):
varten hiukkanen sisään itse.hiukkaset:
hiukkanen.piirrä (ikkuna)
Integroidaksesi blast-efektin peliisi, sinun on tehtävä muutamia muutoksia pääpelisilmukkaan. Luo uusi tiedostonimi ammu-hiukkanen.py ja lisää koodi alla olevilla päivityksillä:
# Luo hiukkasjärjestelmä
hiukkasjärjestelmä = Hiukkasjärjestelmä()# Pääpelisilmukka
juoksu = Totta
kello = pygame.time. Kello()sillä aikaa käynnissä:
dt = kello.tick(60) / 1000.0varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Vääräavaimet = pygame.key.get_pressed()
raja = pelaaja_x < ikkunan_leveys - soittimen_leveysjos avaimet[pygame. K_LEFT] ja pelaaja_x > 0:
pelaaja_x -= 5jos avaimet[pygame. K_OIKEA] ja raja:
pelaaja_x += 5jos avaimet[pygame. K_SPACE]:
bullet_x = pelaaja_x + pelaajan_leveys // 2
bullet_y = pelaaja_y
hiukkasjärjestelmä.lisää_partikkeli (bullet_x, bullet_y, PUNAINEN)hiukkasjärjestelmä.päivitys()
window.fill (MUSTA)
player_pos = (pelaajax, pelaaja_y, pelaajan_leveys, pelaajan_korkeus)
pygame.draw.rect (ikkuna, VALKOINEN, player_pos)
hiukkasjärjestelmä.piirustus (ikkuna)pygame.display.flip()
# Lopeta peli
pygame.quit()
Tässä on tulos:
Kun välilyönti ( pygame. K_SPACE) painetaan, lisää partikkeli hiukkasjärjestelmään luodin kohdassa. Tämä luo räjähdysvaikutelman punaisilla hiukkasilla.
Pölyvaikutus
Viimeinen visuaalinen parannus, jonka voit toteuttaa, on pölyinen taustatehoste. Pölyefekti koostuu pienistä harmaista hiukkasista, jotka liikkuvat pyöreänä kuviona luoden dynaamisen ja pölyisen taustan.
Päivitä Hiukkanen luokka sisältää an kulma ja nopeus jokaiselle hiukkaselle. Kulma määrää liikkeen suunnan ja nopeus määrää kuinka nopeasti hiukkaset liikkuvat ympyräkuviossaan. Muokkaa päivittää() menetelmä päivittää kunkin hiukkasen sijainti sen kulman ja nopeuden perusteella.
Päivitä myös ParticleSystem luokka käsittelemään uutta hiukkasten käyttäytymistä. Partikkelit liikkuvat nyt pyöreänä kuviona peliikkunassa.
# Hiukkasluokka
luokkaaHiukkanen:
def__sen sisällä__(itse, x, y, säde):
itse.x = x
itse.y = y
self.radius = säde
self.angle = random.uniform(0, 2 * matematiikka.pi)
self.speed = random.uniform(0.5, 1.5)defpäivittää(itse):
itse.kulma += 0.02
self.x += math.cos (self.angle) * self.speed
itse.y += math.sin (self.angle) * self.speedjos itse.x < 0:
self.x = ikkunan_leveys
elif self.x > window_width:
itse.x = 0jos itse.y < 0:
self.y = ikkunan_korkeus
elif self.y > window_height:
itse.y = 0defpiirtää(itse, ikkuna):
väri =(128, 128, 128)
pos = (int (itse.x), int (itse.y))
säde = int (self.radius)
pygame.draw.circle (ikkuna, väri, sijainti, säde)# Hiukkasjärjestelmän luokka
luokkaaParticleSystem:
def__sen sisällä__(itse):
self.particles = []defadd_hiukkanen(itse, x, y, säde):
self.partticles.apppend (hiukkas (x, y, säde))defpäivittää(itse):
varten hiukkanen sisään itse.hiukkaset:
particle.update()
defpiirtää(itse, ikkuna):
varten hiukkanen sisään itse.hiukkaset:
hiukkanen.piirrä (ikkuna)
Integroidaksesi pölyefektin peliisi, sinun on tehtävä muutamia muutoksia pääpelisilmukkaan. Luo uusi tiedosto nimeltä pöly-partikkeli.py ja lisää koodi alla olevilla päivityksillä:
# Luo hiukkasjärjestelmä pölyvaikutusta varten
hiukkasjärjestelmä = Hiukkasjärjestelmä()# Pääpelisilmukka
juoksu = Totta
kello = pygame.time. Kello()sillä aikaa käynnissä:
dt = kello.tick(60) / 1000.0varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
juoksu = Väärähiukkanen_x = random.randint(0, window_width)
hiukkanen_y = random.randint(0, window_height)hiukkanen_järjestelmä.add_hiukkanen (hiukkas_x, hiukkanen_y, 1)
hiukkasjärjestelmä.päivitys()
window.fill((0, 0, 0))
hiukkasjärjestelmä.piirustus (ikkuna)pygame.display.flip()
# Lopeta peli
pygame.quit()
Lisää hiukkasia satunnaisesti peliikkunaan käyttämällä random.randint() toiminto. Jokaisella hiukkasella on alkusäde 1. Päivitä ja piirrä hiukkasjärjestelmä peliikkunaan luoden dynaamisen ja pölyisen taustavaikutelman.
Sinun pitäisi nähdä näytöllä monia hiukkasia, jotka liikkuvat satunnaisesti mutta tasaisesti:
Erikoistehosteiden parhaat käytännöt
Kun lisäät erikoistehosteita Pygame-peliisi, ota huomioon seuraavat parhaat käytännöt:
Suorituskyvyn optimointi
Hiukkasjärjestelmissä voi olla suuri määrä hiukkasia, mikä voi vaikuttaa pelin suorituskykyyn. Ota käyttöön tekniikoita, kuten spatiaalinen osiointi (esim. Quadtree) hiukkasten päivitysten ja piirtämisen optimoimiseksi.
Hiukkasten kierrätys
Sen sijaan, että luot ja tuhoat hiukkasia jokaisessa kehyksessä, harkitse hiukkasten uudelleenkäyttöä palauttamalla niiden ominaisuudet, kun ne saavuttavat käyttöikänsä lopun. Tämä auttaa minimoimaan muistin varaamisen ja purkamisen.
Hiukkasten yhdistäminen
Ylläpidä ennalta varattujen hiukkasten poolia, jotta vältytään uusien ilmentymien luomisesta suorituksen aikana. Tämä voi parantaa suorituskykyä ja vähentää muistin pirstoutumista.
Rajoita hiukkasten määrää
Jotta hiukkasjärjestelmät eivät ylikuormittaisi peliruutua, aseta rajat hiukkasten enimmäismäärälle ja poista hiukkaset, kun ne saavuttavat tämän rajan. Tämä varmistaa, että tehosteet pysyvät visuaalisesti houkuttelevina estämättä pelaamista.
Visuaalinen johdonmukaisuus
Säilytä yhtenäinen visuaalinen tyyli koko pelin ajan, mukaan lukien hiukkastehosteet. Varmista, että hiukkasten värit, koot ja liikemallit ovat johdonmukaisia yleisen teeman ja taiteen tyylin kanssa.
Ääniefektit
Lisää äänitehosteita täydentämään hiukkasvaikutuksiasi. Toista esimerkiksi räjähdysääniä, kun tapahtuu räjähdysvaikutus, tai ympäristöääniä, kun sumu- tai pölyefektit ovat aktiivisia.
Tee peleistä hauskempia erikoistehosteilla
Erikoistehosteiden, kuten hiukkasjärjestelmien, lisääminen Pygame-peleihin voi parantaa huomattavasti pelaajakokemusta ja tehdä peleistäsi kiinnostavampia ja hauskempia pelaajille. Toteuttamalla hiukkastehosteita, kuten polkuja, räjähdyksiä, sumua ja pölyä, voit luoda visuaalisesti upeita ja dynaamisia ympäristöjä.
Muista harkita suorituskyvyn optimointia, hiukkasten kierrätystä ja visuaalista yhtenäisyyttä, kun yhdistät peleihin erikoistehosteita. Luovuudella ja kokeilulla voit viedä Pygame-pelisi uudelle tasolle ja valloittaa pelaajat mukaansatempaavilla ja jännittävillä kokemuksilla.