Питхон-ова библиотека Арцаде покрива вас, од најједноставнијих анимација заснованих на бојама до сложеног моделирања честица.

Анимација игра виталну улогу у побољшању визуелне привлачности и ангажовања видео игара. Библиотека Арцаде је Питхон оквир за креирање 2Д игара. Нуди директан и ефикасан начин за укључивање анимација у своје пројекте игре.

Можете користити библиотеку Арцаде за креирање основних анимација покрета и синхронизованих анимација са догађајима у игри.

Направите једноставну игру

Пре него што почнете, уверите се да имате пип инсталиран на вашем уређају. Користите ову команду да инсталирате библиотеку аркада:

пип инсталл арцаде

Након тога, креирајте Питхон датотеку под називом симпле-гаме.пи и започните постављањем игре у којој играч може да се креће лево и десно.

Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.

Користећи Арцаде библиотеку, можете креирати прозор, подесити окружење игре и управљати уносом играча. Ево исечка кода за почетак:

instagram viewer
увоз арцаде

СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600

класаМиГаме(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Моја игра")
селф.плаиер_к = СЦРЕЕН_ВИДТХ // 2
селф.плаиер_и = СЦРЕЕН_ХЕИГХТ // 2

дефон_драв(сам):
арцаде.старт_рендер()
цол = аркада.боја. ПЛАВИ
арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и, 20, кол)

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ЛИЈЕВО:
селф.плаиер_к -= 10
елиф кључ == арцаде.кеи. ЈЕЛ ТАКО:
селф.плаиер_к += 10

дефглавни():
игра = МиГаме()
арцаде.рун()

ако __наме__ == "__главни__":
главни()

Додајте основну анимацију покрета

Сада идите корак даље и додајте основну анимацију покрета објекту играча. Да анимирате играч у покрету, креирајте 3 различита круга и итерирајте између њих узастопно када играч почне да се креће. Ево ажурираног исечка кода за покрет-анимација.пи фајл:

класаМиГаме(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Моја игра")
селф.плаиер_к = СЦРЕЕН_ВИДТХ // 2
селф.плаиер_и = СЦРЕЕН_ХЕИГХТ // 2
селф.фраме_цоунтер = 0

дефон_драв(сам):
арцаде.старт_рендер()
цол1 = арцаде.цолор. ПЛАВИ
цол2 = арцаде.цолор. ЗЕЛЕН
цол3 = арцаде.цолор. РЕД

ако селф.фраме_цоунтер < 10:
арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и, 20,цол1 )
елиф селф.фраме_цоунтер < 20:
арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и, 20,цол2 )
друго:
арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и, 20, кол3)

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ЛИЈЕВО:
селф.плаиер_к -= 10
селф.фраме_цоунтер = (селф.фраме_цоунтер + 1) % 30
елиф кључ == арцаде.кеи. ЈЕЛ ТАКО:
селф.плаиер_к += 10
селф.фраме_цоунтер = (селф.фраме_цоунтер + 1) % 30

Ево примера излазног оквира:

Контролисање брзине и правца анимације

Да бисте контролисали брзину анимације, можете увести систем брзине кадрова. Такође можете променити редослед кадрова у зависности од смера кретања играча. Када се играч помери с лева на десно, оквири ће се приказати обрнутим редоследом.

Ево модификованог исечка кода за фраме-рате.пи фајл:

класаМиГаме(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Моја игра")
селф.плаиер_к = СЦРЕЕН_ВИДТХ // 2
селф.плаиер_и = СЦРЕЕН_ХЕИГХТ // 2
селф.фраме_цоунтер = 0
цол1 = арцаде.цолор. ПЛАВИ
цол2 = арцаде.цолор. ЗЕЛЕН
цол3 = арцаде.цолор. РЕД
селф.фрамес = [цол1, цол2, цол3]
селф.фраме_рате = 10

дефон_драв(сам):
арцаде.старт_рендер()
фраме_индек = селф.фраме_цоунтер // селф.фраме_рате % лен (селф.фрамес)

ако селф.плаиер_к < СЦРЕЕН_ВИДТХ // 2:
фраме_индек = лен (селф.фрамес) - 1 - индекс_фраме

индекс = селф.фрамес[фраме_индек]
арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и, 20, индекс)

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ЛИЈЕВО:
селф.плаиер_к -= 10
селф.фраме_цоунтер += 1
елиф кључ == арцаде.кеи. ЈЕЛ ТАКО:
селф.плаиер_к += 10
селф.фраме_цоунтер += 1

Користите оператор модула % са лен (селф.фрамес) како би се осигурало да се фраме_индек увек остаје у опсегу доступних оквира. Ово спречава да ИндекЕррор од појаве када анимација прође кроз оквире.

Подесите број слика вредност за контролу брзине анимације и уживање у анимираном кретању објеката ваше игре.

Укључујући додатне функције

Библиотека Арцаде нуди различите функције за побољшање ваших анимација.

Партицле Еффецтс

Можете креирати ефекте честица, као што су експлозије или дим, да додате реализам својој игри. Направите датотеку под називом честица.пи и додајте код у наставку за једноставну имплементацију система честица користећи Питхон и аркадну библиотеку:

увоз арцаде
увоз насумично

# Димензије екрана
СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600

# Боје
БЕЛА = (255, 255, 255)

# Класа честица
класаЧестица:
деф__у томе__(селф, к, и, дк, ди, радијус, боја, животни век):
селф.к = к
селф.и = и
селф.дк = дк
селф.ди = ди
селф.радиус = радијус
селф.цолор = боја
селф.животни век = животни век

дефажурирање(сам):
селф.к += селф.дк
селф.и += селф.ди
само.животни век -= 1

дефцртати(сам):
арцаде.драв_цирцле_филлед (селф.к, селф.и, селф.радиус, селф.цолор)

# Класа игре
класаМиГаме(аркада. прозор):
деф__у томе__(само, ширина, висина):
супер().__инит__(ширина, висина, „Пример честице“)
селф.партицлес = []

дефподесити(сам):
# Креирајте честице
за _ ин домет(100):
к = рандом.рандранге (СЦРЕЕН_ВИДТХ)
и = рандом.рандранге (СЦРЕЕН_ХЕИГХТ)
дк = рандом.униформ(-1, 1)
ди = рандом.униформ(-1, 1)
радијус = рандом.униформ(2, 5)
боја = аркада.боја. БЕО
животни век = рандом.рандинт(60, 120)
честица = честица (к, и, дк, ди, радијус, боја, животни век)
селф.партицлес.аппенд (партицле)

дефон_драв(сам):
арцаде.старт_рендер()
за честица ин селф.партицлес:
партицле.драв()

дефажурирање(селф, делта_тиме):
за честица ин селф.партицлес:
партицле.упдате()

ако честица.животни век <= 0:
селф.партицлес.ремове (партиц)

дефглавни():
игра = Моја игра (СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ)
гаме.сетуп()
арцаде.рун()

ако __наме__ == "__главни__":
главни()

Требало би да видите анимацију која укључује много покретних честица:

Интерактивне анимације

Примените интерактивне анимације које реагују на кориснички унос или догађаје у игри. На пример, када играч ступи у интеракцију са објектом, он може да анимира, промени боју или се на неки начин трансформише. Ове интерактивне анимације пружају повратну информацију и побољшавају ангажман играча у игри. Ево кода за интерацтиве-аниматион.пи фајл:

увоз арцаде

# Димензије екрана
СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600

# Боје
БЕЛА = (255, 255, 255)
ЦРВЕНА = (255, 0, 0)

класаМиГаме(аркада. прозор):
деф__у томе__(само, ширина, висина):
супер().__инит__(ширина, висина, "Интерактивна анимација")
селф.плаиер_к = 400
селф.плаиер_и = 300
селф.плаиер_радиус = 30
селф.плаиер_цолор = ЦРВЕНА
селф.аниматион_радиус = 60
селф.аниматион_цолор = БЕЛА
селф.аниматион_ацтиве = Фалсе

дефон_драв(сам):
арцаде.старт_рендер()

арцаде.драв_цирцле_филлед (селф.плаиер_к,
селф.плаиер_и,
селф.плаиер_радиус,
селф.плаиер_цолор)

ако селф.аниматион_ацтиве:
арцаде.драв_цирцле_филлед (селф.плаиер_к,
селф.плаиер_и,
селф.аниматион_радиус,
селф.аниматион_цолор)

дефон_моусе_пресс(селф, к, и, дугме, модификатори):
ако (селф.плаиер_к - селф.плаиер_радиус <=
к <= селф.плаиер_к + селф.плаиер_радиус и
селф.плаиер_и - селф.плаиер_радиус <=
и <= селф.плаиер_и + селф.плаиер_радиус
):
селф.аниматион_ацтиве = Истина

дефажурирање(селф, делта_тиме):
ако селф.аниматион_ацтиве:
селф.аниматион_радиус += 1

ако селф.аниматион_радиус > 100:
селф.аниматион_ацтиве = Фалсе
селф.аниматион_радиус = 0

дефглавни():
игра = Моја игра (СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ)
арцаде.рун()

ако __наме__ == "__главни__":
главни()

Заобиђите неопходне методе, као нпр он_драв, он_моусе_пресс, и ажурирање, за руковање цртањем плејера и анимације, руковање кликовима мишем и ажурирање анимације.

Да бисте нацртали играча, користите арцаде.драв_цирцле_филлед функција, која преузима (к, и) координате центра, полупречник и боја као аргументи. Функција драв_цирцле_филлед је једна од Аркадни алати које можете користити за цртање средстава игре. У овом случају, можете нацртати растући круг мењајући радијус током времена.

Тхе он_моусе_пресс метода се покреће када корисник кликне мишем. Проверава да ли су координате миша унутар граница објекта играча и активира анимацију ако јесу.

Најбоље праксе за додавање анимације

Када додајете анимацију у своје игре, узмите у обзир следеће најбоље праксе:

Ограничите број анимација

Много анимација са много оквира може утицати на перформансе. Размислите о минимизирању броја потребних анимација или оквира, посебно за некритичне елементе у игри. Поједностављивање анимација може помоћи у одржавању доследне брзине кадрова и оптимизацији коришћења ресурса.

Пакетно рендеровање сличних објеката

Групирајте сличне објекте који деле исте оквире анимације и текстуре заједно и рендерујте их као скуп. Групирање смањује број позива за извлачење, што резултира побољшаним перформансама. Ова техника је посебно корисна када се анимирају објекти који користе исту листу сприте-а или имају сличне секвенце анимације.

Користите интерполацију за глатку анимацију

Примените технике интерполације, као што је линеарна интерполација (лерпинг), да бисте постигли глатке прелазе анимације. Интерполација израчунава средње вредности између кључних кадрова анимације да би се створила флуидна кретања. Овај приступ спречава изненадне скокове или трзаве покрете између кадрова, што резултира визуелно привлачнијим анимацијама.

Узмите у обзир брзину и време анимације

Експериментишите са различитим брзинама и временом анимације да бисте пронашли прави баланс за своју игру. Подесите трајање кадра или користите различите секвенце анимације да бисте направили варијације у брзини, убрзању или успоравању. Ова подешавања могу додати дубину и карактер анимацијама ваше игре.

Тестирајте и оптимизујте

Редовно тестирајте своје анимације на различитим уређајима и пратите перформансе. Потражите потенцијална уска грла или успоравања и оптимизујте у складу са тим. Овај процес помаже да се обезбеди глатко и доследно искуство анимације на широком спектру уређаја.

Учините игре привлачнијим помоћу анимације

Додавање анимација вашим играма може значајно побољшати ангажовање играча и урањање. Анимације пружају визуелну повратну информацију акцијама играча, чинећи игру интуитивнијом и пријатнијом. Они оживљавају светове игара, стварајући осећај реализма и узбуђења.

Било да се ради о лику који трчи, објекту који експлодира или једноставном прелазном ефекту, анимације доприносе динамичнијем и задивљујућем искуству играња.