Python's Arcade bibliotēka sniedz jums informāciju, sākot no vienkāršākajām krāsu animācijām un beidzot ar sarežģītu daļiņu modelēšanu.

Animācijai ir būtiska loma videospēļu vizuālās pievilcības un iesaistīšanās uzlabošanā. Arkādes bibliotēka ir Python sistēma 2D spēļu izveidei. Tas piedāvā vienkāršu un efektīvu veidu, kā iekļaut animācijas savos spēļu projektos.

Varat izmantot Arkādes bibliotēku, lai izveidotu pamata kustību animācijas un sinhronizētas animācijas ar spēļu notikumiem.

Izveidojiet vienkāršu spēli

Pirms sākat, pārliecinieties, ka jums ir pip ir instalēts jūsu ierīcē. Izmantojiet šo komandu, lai instalētu arkādes bibliotēku:

pip instalēšanas arkāde

Pēc tam izveidojiet Python failu ar nosaukumu simple-game.py un sāciet, izveidojot spēli, kurā spēlētājs var pārvietoties pa kreisi un pa labi.

Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.

Izmantojot Arkādes bibliotēku, varat izveidot logu, iestatīt spēles vidi un apstrādāt spēlētāja ievadi. Šeit ir koda fragments, lai sāktu:

instagram viewer
imports arkāde

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

klasēMana spēle(pasāža. logs):
def__tajā__(pats):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mana spēle")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRĀNA_AUGSTUMS // 2

defon_draw(pats):
arcade.start_render()
col = arcade.color. ZILS
arcade.draw_circle_filled (self.player_x, self.player_y, 20, kolonna)

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= 10
elifs taustiņš == arcade.key. PA LABI:
self.player_x += 10

defgalvenais():
spēle = Mana spēle ()
arcade.run()

ja __nosaukums__ == "__galvenais__":
galvenais ()

Pievienojiet pamata kustību animāciju

Tagad veiciet savu spēli soli tālāk un spēlētāja objektam pievienojiet pamata kustību animāciju. Lai animētu spēlētājs kustībā, izveidojiet 3 dažādus apļus un atkārtojiet tos secīgi, kad spēlētājs sāk kustēties. Šeit ir atjaunināts koda fragments kustība-animācija.py fails:

klasēMana spēle(pasāža. logs):
def__tajā__(pats):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mana spēle")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRĀNA_AUGSTUMS // 2
self.frame_counter = 0

defon_draw(pats):
arcade.start_render()
col1 = arcade.color. ZILS
col2 = arcade.color. ZAĻĀ
col3 = arcade.color. SARKANS

ja self.frame_counter < 10:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,col1 )
elifs self.frame_counter < 20:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,2. sleja)
cits:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, col3)

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= 10
self.frame_counter = (self.frame_counter + 1) % 30
elifs taustiņš == arcade.key. PA LABI:
self.player_x += 10
self.frame_counter = (self.frame_counter + 1) % 30

Šeit ir izvades rāmja piemērs:

Animācijas ātruma un virziena kontrole

Lai kontrolētu animācijas ātrumu, varat ieviest kadru ātruma sistēmu. Varat arī mainīt kadru secību atkarībā no atskaņotāja kustības virziena. Kad atskaņotājs pārvietojas no kreisās puses uz labo, kadri tiks parādīti apgrieztā secībā.

Šeit ir modificēts koda fragments kadru ātrums.py fails:

klasēMana spēle(pasāža. logs):
def__tajā__(pats):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mana spēle")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRĀNA_AUGSTUMS // 2
self.frame_counter = 0
col1 = arcade.color. ZILS
col2 = arcade.color. ZAĻĀ
col3 = arcade.color. SARKANS
self.frames = [col1, col2, col3]
self.frame_rate = 10

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

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

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

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= 10
self.frame_counter += 1
elifs taustiņš == arcade.key. PA LABI:
self.player_x += 10
self.frame_counter += 1

Izmantojiet moduļa operatoru % ar len (self.frames) lai nodrošinātu, ka frame_index vienmēr paliek pieejamo kadru diapazonā. Tas novērš Indeksa kļūda nerodas, kad animācija iet cauri kadriem.

Pielāgojiet kadru ātrums vērtību, lai kontrolētu animācijas ātrumu un izbaudītu spēles objektu animēto kustību.

Ieskaitot papildu funkcijas

Arkādes bibliotēka nodrošina dažādas funkcijas, lai uzlabotu jūsu animācijas.

Daļiņu efekti

Varat izveidot daļiņu efektus, piemēram, sprādzienus vai dūmus, lai pievienotu spēlei reālismu. Izveidojiet failu ar nosaukumu daļiņa.py un pievienojiet tālāk norādīto kodu vienkāršai daļiņu sistēmas ieviešanai, izmantojot Python un arkādes bibliotēku:

imports arkāde
imports nejauši

# Ekrāna izmēri
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Krāsas
BALTS = (255, 255, 255)

# Daļiņu klase
klasēDaļiņa:
def__tajā__(self, x, y, dx, dy, rādiuss, krāsa, mūža ilgums):
pats.x = x
self.y = y
self.dx = dx
self.dy = dy
self.radius = rādiuss
self.color = krāsa
self.lifespan = mūža ilgums

defAtjaunināt(pats):
self.x += self.dx
self.y += self.dy
sevis.dzīves ilgums -= 1

defizdarīt(pats):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)

# Spēles klase
klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums, "Daļiņu piemērs")
self.partticles = []

defuzstādīt(pats):
# Izveidojiet daļiņas
priekš _ iekšā diapazons(100):
x = nejaušs.randrange (SCREEN_WIDTH)
y = nejaušs.randrange (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
rādiuss = random.uniform(2, 5)
krāsa = arkāde.krāsa. BALTS
dzīves ilgums = random.randint(60, 120)
daļiņa = daļiņa (x, y, dx, dy, rādiuss, krāsa, kalpošanas laiks)
self.partticles.append (daļiņa)

defon_draw(pats):
arcade.start_render()
priekš daļiņa iekšā pašdaļiņas:
particle.draw()

defAtjaunināt(self, delta_time):
priekš daļiņa iekšā pašdaļiņas:
particle.update()

ja daļiņa.dzīves ilgums <= 0:
self.partticles.remove (daļiņa)

defgalvenais():
spēle = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

ja __nosaukums__ == "__galvenais__":
galvenais ()

Jums vajadzētu redzēt animāciju, kas ietver daudzas kustīgas daļiņas:

Interaktīvās animācijas

Ieviesiet interaktīvas animācijas, kas reaģē uz lietotāja ievadi vai spēles notikumiem. Piemēram, kad spēlētājs mijiedarbojas ar objektu, tas var animēt, mainīt krāsu vai kaut kādā veidā pārveidoties. Šīs interaktīvās animācijas sniedz atgriezenisko saiti un uzlabo spēlētāja iesaistīšanos spēlē. Šeit ir kods interactive-animation.py fails:

imports arkāde

# Ekrāna izmēri
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Krāsas
BALTS = (255, 255, 255)
SARKANS = (255, 0, 0)

klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums, "Interaktīvā animācija")
self.player_x = 400
self.player_y = 300
self.player_radius = 30
self.player_color = SARKANS
self.animation_radius = 60
self.animation_color = BALTS
self.animation_active = Nepatiesi

defon_draw(pats):
arcade.start_render()

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

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

defon_mouse_press(self, x, y, poga, modifikatori):
ja (self.player_x — self.player_radius <=
x <= self.player_x + self.player_radius un
self.player_y — self.player_radius <=
y <= self.player_y + self.player_radius
):
self.animation_active = Taisnība

defAtjaunināt(self, delta_time):
ja self.animation_active:
self.animation_radius += 1

ja self.animation_radius > 100:
self.animation_active = Nepatiesi
self.animation_radius = 0

defgalvenais():
spēle = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ja __nosaukums__ == "__galvenais__":
galvenais ()

Ignorēt nepieciešamās metodes, piemēram, on_draw, on_mouse_press, un Atjaunināt, lai apstrādātu atskaņotāja un animācijas zīmēšanu, peles klikšķu darbību un animācijas atjaunināšanu.

Lai uzzīmētu atskaņotāju, izmantojiet arcade.draw_circle_filled funkcija, kas aizņem (x, y) centra koordinātas, rādiuss un krāsa kā argumenti. Funkcija draw_circle_filled ir viena no Arkādes rīki, kurus varat izmantot spēļu līdzekļu zīmēšanai. Šajā gadījumā jūs varat uzzīmēt augošu apli, mainot rādiusu laika gaitā.

The on_mouse_press metode darbojas, kad lietotājs noklikšķina ar peli. Tas pārbauda, ​​vai peles koordinātas atrodas atskaņotāja objekta robežās, un aktivizē animāciju, ja tās ir.

Animācijas pievienošanas paraugprakse

Pievienojot spēlēm animāciju, ņemiet vērā tālāk norādīto paraugpraksi.

Ierobežojiet animāciju skaitu

Daudzas animācijas ar daudziem kadriem var ietekmēt veiktspēju. Apsveriet iespēju samazināt nepieciešamo animāciju vai kadru skaitu, jo īpaši attiecībā uz spēles elementiem, kas nav kritiski. Animāciju vienkāršošana var palīdzēt uzturēt konsekventu kadru ātrumu un optimizēt resursu izmantošanu.

Pakešu renderēšanas līdzīgi objekti

Grupējiet līdzīgus objektus, kuriem ir vienādi animācijas kadri un faktūras, un atveidojiet tos kā grupu. Grupēšana samazina izlozes zvanu skaitu, tādējādi uzlabojot veiktspēju. Šis paņēmiens ir īpaši noderīgs, animējot objektus, kas izmanto vienu un to pašu sprite lapu vai kuriem ir līdzīgas animācijas secības.

Izmantojiet interpolāciju vienmērīgai animācijai

Izmantojiet interpolācijas paņēmienus, piemēram, lineāro interpolāciju (lerping), lai panāktu vienmērīgas animācijas pārejas. Interpolācija aprēķina starpvērtības starp animācijas atslēgkadriem, lai radītu plūstošas ​​kustības. Šī pieeja novērš pēkšņus lēcienus vai saraustītas kustības starp kadriem, tādējādi radot vizuāli pievilcīgākas animācijas.

Apsveriet animācijas ātrumu un laiku

Eksperimentējiet ar dažādiem animācijas ātrumiem un laiku, lai atrastu savai spēlei pareizo līdzsvaru. Pielāgojiet kadra ilgumu vai izmantojiet dažādas animācijas secības, lai radītu ātruma, paātrinājuma vai palēninājuma variācijas. Šie pielāgojumi var pievienot jūsu spēles animācijām dziļumu un raksturu.

Pārbaudi un optimizē

Regulāri pārbaudiet savas animācijas dažādās ierīcēs un uzraugiet veiktspēju. Meklējiet iespējamos vājos punktus vai palēninājumus un attiecīgi optimizējiet. Šis process palīdz nodrošināt vienmērīgu un konsekventu animācijas pieredzi plašā ierīču klāstā.

Padariet spēles saistošākas ar animāciju

Animāciju pievienošana spēlēm var ievērojami uzlabot spēlētāju iesaistīšanos un iedziļināšanos. Animācijas nodrošina vizuālu atgriezenisko saiti par spēlētāja darbībām, padarot spēli intuitīvāku un patīkamāku. Tie atdzīvina spēļu pasaules, radot reālisma un aizrautības sajūtu.

Neatkarīgi no tā, vai tas ir skrienošs tēls, objekts, kas eksplodē, vai vienkāršs pārejas efekts, animācijas veicina dinamiskāku un valdzinošāku spēļu pieredzi.