Pythoni Arcade'i teek pakub teile teavet, alates kõige lihtsamatest värvipõhistest animatsioonidest kuni keeruka osakeste modelleerimiseni.
Animatsioon mängib üliolulist rolli videomängude visuaalse atraktiivsuse ja kaasatuse suurendamisel. Arcade raamatukogu on Pythoni raamistik 2D-mängude loomiseks. See pakub lihtsat ja tõhusat viisi animatsioonide lisamiseks oma mänguprojektidesse.
Arcade teeki saate kasutada põhiliste liikumisanimatsioonide ja mängusündmustega sünkroonitud animatsioonide loomiseks.
Looge lihtne mäng
Enne alustamist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku arkaadteegi installimiseks:
pip install arkaad
Pärast seda looge Pythoni fail nimega lihtne-mäng.py ja alustage mängu seadistamisega, kus mängija saab liikuda vasakule ja paremale.
Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Arcade teeki kasutades saate luua akna, seadistada mängukeskkonda ja käsitleda mängija sisestust. Alustuseks on siin koodilõik:
importida arkaad
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRAANI_KÕRGUS // 2defon_draw(ise):
arcade.start_render()
col = arkaad.värv. SININE
arcade.draw_circle_filled (self.player_x, self.player_y, 20, veerg)defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= 10
elif võti == arcade.key. PAREMALE:
self.player_x += 10defpeamine():
mäng = MinuMäng()
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Lisage põhiline liikumisanimatsioon
Nüüd viige oma mäng samm edasi ja lisage mängija objektile põhiline liikumisanimatsioon. Et animeerida mängija liikumisel, looge 3 erinevat ringi ja korrake neid järjest, kui mängija hakkab liikuma. Siin on värskendatud koodilõik liikumine-animatsioon.py fail:
klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRAANI_KÕRGUS // 2
self.frame_counter = 0defon_draw(ise):
arcade.start_render()
col1 = arkaad.värv. SININE
col2 = arkaad.värv. ROHELINE
col3 = arkaad.värv. PUNANEkui self.frame_counter < 10:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,col1 )
elif self.frame_counter < 20:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,veerg2)
muidu:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, veerg3)
defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= 10
self.frame_counter = (self.frame_counter + 1) % 30
elif võti == arcade.key. PAREMALE:
self.player_x += 10
self.frame_counter = (self.frame_counter + 1) % 30
Siin on väljundraami näide:
Animatsiooni kiiruse ja suuna juhtimine
Animatsiooni kiiruse juhtimiseks saate kasutusele võtta kaadrisageduse süsteemi. Samuti saate muuta kaadrite järjekorda sõltuvalt mängija liikumissuunast. Kui mängija liigub vasakult paremale, kuvatakse raamid vastupidises järjekorras.
Siin on modifitseeritud koodilõik kaadrisagedus.py fail:
klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRAANI_KÕRGUS // 2
self.frame_counter = 0
col1 = arkaad.värv. SININE
col2 = arkaad.värv. ROHELINE
col3 = arkaad.värv. PUNANE
self.frames = [veerg1, veerg2, veerg3]
self.frame_rate = 10defon_draw(ise):
arcade.start_render()
frame_index = self.frame_counter // self.frame_rate % len (self.frames)kui self.player_x < SCREEN_WIDTH // 2:
frame_index = len (self.frames) - 1 - frame_indexindeks = self.frames[frame_index]
arcade.draw_circle_filled (self.player_x, self.player_y, 20, indeks)
defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= 10
self.frame_counter += 1
elif võti == arcade.key. PAREMALE:
self.player_x += 10
self.frame_counter += 1
Kasutage moodulite operaatorit % koos len (self.frames) tagamaks, et raami_indeks jääb alati saadaolevate kaadrite vahemikku. See takistab Indeksi viga tekkimisest, kui animatsioon läbib kaadreid.
Reguleerige kaadrisagedus väärtust, et juhtida animatsiooni kiirust ja nautida oma mänguobjektide animeeritud liikumist.
Kaasa arvatud lisafunktsioonid
Arkaadi teek pakub erinevaid funktsioone teie animatsioonide täiustamiseks.
Osakeste efektid
Mängule realistlikkuse lisamiseks saate luua osakeste efekte (nt plahvatusi või suitsu). Looge fail nimega osake.py ja lisage Pythoni ja arkaadteegi abil lihtsa osakeste süsteemi juurutamiseks allolev kood:
importida arkaad
importida juhuslik# Ekraani mõõtmed
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Värvid
VALGE = (255, 255, 255)# Osakeste klass
klassOsake:
def__selles__(ise, x, y, dx, dy, raadius, värv, eluiga):
ise.x = x
ise.y = y
ise.dx = dx
ise.dy = dy
ise.raadius = raadius
ise.värv = värv
ise.eluaeg = eluigadefvärskendada(ise):
ise.x += ise.dx
ise.y += ise.dy
ise.eluiga -= 1defjoonistada(ise):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)# Mänguklass
klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Osakeste näide")
self.partticles = []defseadistamine(ise):
# Loo osakesi
jaoks _ sisse vahemik(100):
x = random.randrange (SCREEN_WIDTH)
y = random.randrange (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
raadius = random.uniform(2, 5)
värv = arkaad.värv. VALGE
eluiga = random.randint(60, 120)
osake = osake (x, y, dx, dy, raadius, värvus, eluiga)
ise.osakesed.lisa (osake)defon_draw(ise):
arcade.start_render()
jaoks osakest sisse iseosakesed:
particle.draw()defvärskendada(ise, delta_aeg):
jaoks osakest sisse iseosakesed:
particle.update()kui osake.eluiga <= 0:
ise.osakesed.eemalda (osake)defpeamine():
mäng = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Peaksite nägema animatsiooni, mis hõlmab paljusid liikuvaid osakesi:
Interaktiivsed animatsioonid
Rakendage interaktiivseid animatsioone, mis reageerivad kasutaja sisendile või mängusündmustele. Näiteks kui mängija suhtleb objektiga, võib see animeerida, muuta värvi või muundada mingil viisil. Need interaktiivsed animatsioonid annavad tagasisidet ja suurendavad mängija seotust mänguga. Siin on kood interactive-animation.py fail:
importida arkaad
# Ekraani mõõtmed
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Värvid
VALGE = (255, 255, 255)
PUNANE = (255, 0, 0)klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Interaktiivne animatsioon")
self.player_x = 400
self.player_y = 300
self.player_radius = 30
self.player_color = PUNANE
self.animation_radius = 60
self.animation_color = VALGE
self.animation_active = Valedefon_draw(ise):
arcade.start_render()arcade.draw_circle_filled (self.player_x,
self.player_y,
self.player_radius,
self.player_color)kui self.animation_active:
arcade.draw_circle_filled (self.player_x,
self.player_y,
self.animation_radius,
self.animation_color)defon_mouse_press(ise, x, y, nupp, modifikaatorid):
kui (ise.mängija_x – ise.mängija_raadius <=
x <= ise.mängija_x + ise.mängija_raadius ja
ise.mängija_y – ise.mängija_raadius <=
y <= ise.mängija_y + ise.mängija_raadius
):
self.animation_active = Tõsidefvärskendada(ise, delta_aeg):
kui self.animation_active:
self.animation_radius += 1kui self.animation_radius > 100:
self.animation_active = Vale
self.animation_radius = 0defpeamine():
mäng = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Alistage vajalikud meetodid, nt on_draw, on_mouse_press, ja värskendada, et hallata pleieri ja animatsiooni joonistamist, hiireklõpsude haldamist ja animatsiooni värskendamist.
Mängija joonistamiseks kasutage nuppu arcade.draw_circle_filled funktsioon, mis võtab (x, y) argumentidena keskpunkti, raadiuse ja värvi koordinaadid. Funktsioon draw_circle_filled on üks Arcade'i tööriistad, mida saate kasutada mänguvarade joonistamiseks. Sel juhul saate raadiust aja jooksul muutes joonistada kasvava ringi.
The on_mouse_press meetod töötab siis, kui kasutaja klõpsab hiirt. See kontrollib, kas hiire koordinaadid on mängija objekti piirides, ja aktiveerib animatsiooni, kui need on.
Animatsiooni lisamise parimad tavad
Mängudele animatsiooni lisamisel võtke arvesse järgmisi parimaid tavasid.
Piirake animatsioonide arvu
Paljude kaadritega animatsioonid võivad jõudlust mõjutada. Kaaluge vajalike animatsioonide või kaadrite arvu minimeerimist, eriti mängu mittekriitiliste elementide puhul. Animatsioonide lihtsustamine võib aidata säilitada ühtlast kaadrisagedust ja optimeerida ressursside kasutamist.
Sarnaste objektide pakettrenderdamine
Grupeerige sarnased objektid, millel on samad animatsiooniraamid ja -tekstuurid, ja renderdage need komplektina. Pakkimine vähendab loosikõnede arvu, mille tulemuseks on parem jõudlus. See tehnika on eriti kasulik, kui animeerida objekte, mis kasutavad sama sprite-lehte või millel on sarnased animatsioonijärjestused.
Kasutage sujuvaks animatsiooniks interpolatsiooni
Kasutage interpolatsioonitehnikaid, nagu lineaarne interpolatsioon (lerping), et saavutada sujuvaid animatsiooni üleminekuid. Interpolatsioon arvutab vaheväärtused animatsiooni võtmekaadrite vahel, et luua sujuvaid liikumisi. See lähenemine hoiab ära äkilised hüpped või tõmblevad liigutused kaadrite vahel, mille tulemuseks on visuaalselt atraktiivsemad animatsioonid.
Kaaluge animatsiooni kiirust ja ajastust
Katsetage erinevate animatsioonikiiruste ja ajastustega, et leida oma mängu jaoks õige tasakaal. Reguleerige kaadri kestust või kasutage erinevaid animatsiooniseeriaid, et luua erinevusi kiiruses, kiirenduses või aeglustuses. Need kohandused võivad teie mängu animatsioonidele sügavust ja iseloomu lisada.
Testige ja optimeerige
Testige regulaarselt oma animatsioone erinevates seadmetes ja jälgige jõudlust. Otsige üles võimalikud kitsaskohad või aeglustused ja optimeerige vastavalt. See protsess aitab tagada sujuva ja järjepideva animatsioonikogemuse paljudes seadmetes.
Muutke mängud animatsiooniga kaasahaaravamaks
Animatsioonide lisamine mängudele võib märkimisväärselt suurendada mängijate kaasatust ja keelekümblust. Animatsioonid annavad visuaalset tagasisidet mängija tegevustele, muutes mängu intuitiivsemaks ja nauditavamaks. Need äratavad mängumaailmad ellu, tekitades realismi ja põnevuse tunde.
Olgu tegemist jooksva tegelase, plahvatava objekti või lihtsa üleminekuefektiga – animatsioonid aitavad kaasa dünaamilisemale ja kaasahaaravamale mängukogemusele.