Можете да оживите најједноставније игре са анимираним честицама. Симулирајте кретање, експлозије и још много тога користећи ове технике.
Пигаме је популарна библиотека за развој игара користећи Питхон. Док правите игре, додавање специјалних ефеката може значајно побољшати визуелну привлачност и целокупно искуство за играче.
Системи честица су моћна техника за стварање динамичних и визуелно занимљивих ефеката као што су облаци прашине, експлозије, магла и још много тога.
Направите једноставну игру
Пре него што зароните у системе честица и визуелна побољшања, почните креирањем једноставне игре користећи Пигаме. Креирајте нову датотеку под називом симпле-гаме.пи и започните увозом потребних библиотека и иницијализацијом Пигаме-а. Подесите прозор игре са одређеном ширином и висином.
Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.
Унутар главне петље игре управљајте корисничким догађајима и ажурирајте позицију играча на основу притиска на тастере. Нацртај правоугаоник за објекат играча који користи пигаме.драв.рецт().
На крају, ажурирајте прозор игре помоћу пигаме.дисплаи.флип() и напустите игру када играч изађе из петље. Ова једноставна игра послужиће као основа за додавање специјалних ефеката помоћу система честица.
Требало би да видите бели квадрат који представља играча којег можете да померате лево и десно:
Креирање различитих типова честица
Сада када сте поставили своју једноставну игру, можете додати различите системе честица. Креирајте класе честица за сваки ефекат и класу система честица за управљање и ажурирање честица.
Ефекат честица када се играч креће
Први ефекат честица биће траг честица прашине које се емитују са леђа играча када играч почне да кретати користећи унос миша или тастатуре. Поред тога, смер честица прашине ће се променити када плејер промени смер.
Дефинишите а Честица класа која представља појединачну честицу. Свака честица има почетни положај (Икс и и), случајна брзина (дк и ди), и животни век који одређује колико дуго ће честица постојати.
Такође, дефинишите а ПартицлеСистем класа која управља колекцијом честица. Можете додати нову честицу систему користећи адд_партицле() методом. Тхе ажурирање() метода ажурира све честице у систему и уклања честице које су достигле крај свог животног века.
# Класа честица
класаЧестица:
деф__у томе__(сам, к, и):
селф.к = к
селф.и = и
селф.дк = рандом.униформ(-1, 1)
селф.ди = рандом.униформ(-1, 1)
селф.лифетиме = 60дефажурирање(сам):
селф.к += селф.дк
селф.и += селф.ди
себе.животни век -= 1дефцртати(сам, прозор):
боја = (200, 200, 200)
позиција = (инт (селф.к), инт (селф.и))
пигаме.драв.цирцле (прозор, боја, позиција, 2)# Класа система честица
класаПартицлеСистем:
деф__у томе__(сам):
селф.партицлес = []дефадд_партицле(сам, к, и):
селф.партицлес.аппенд (честица (к, и))дефажурирање(сам):
за честица ин селф.партицлес:
партицле.упдате()ако честица.животни век <= 0:
селф.партицлес.ремове (партиц)
дефцртати(сам, прозор):
за честица ин селф.партицлес:
партицле.драв (прозор)
Да бисте интегрисали систем честица у своју игру, потребно је да направите неколико модификација главне петље игре. Креирајте нову датотеку под називом покрет-честице.пи и додајте код са ажурирањима у наставку:
# Креирајте систем честица
партицле_систем = ПартицлеСистем()# Главна петља игре
трчање = Истина
сат = пигаме.тиме. сат()док трчање:
дт = цлоцк.тицк(60) / 1000.0за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсепартицле_и = плаиер_и + плаиер_хеигхт // 2
партицле_к = плаиер_к + плаиер_видтхкључеви = пигаме.кеи.гет_прессед()
граница = плаиер_к < виндов_видтх - плаиер_видтхако кључеви [пигаме. К_ЛЕФТ] и плаиер_к > 0:
плаиер_к -= 5
партицле_систем.адд_партицле (партицле_к, партицле_и)ако кључеви [пигаме. К_ДЕСНО] и граница:
плаиер_к += 5
партицле_систем.адд_партицле (плаиер_к, партицле_и)партицле_систем.упдате()
виндов.филл (ЦРНИ)
плаиер_пос = (плаиер_к, плаиер_и, плаиер_видтх, плаиер_хеигхт)
пигаме.драв.рецт (прозор, ВХИТЕ, плаиер_пос)
партицле_систем.драв (прозор)пигаме.дисплаи.флип()
# Прекините игру
пигаме.куит()
Када сада померите објекат играча, требало би да видите честице које наглашавају кретање:
Бласт Еффецт
Следећи ефекат честица ће бити ефекат експлозије који се јавља када играч испали метак. Ефекат експлозије ће се састојати од честица црвене боје које се емитују из положаја метка.
Дефинишите а Честица разред сличан претходном, али овај пут укључује а боја параметар који представља боју честице.
Такође, ажурирајте ПартицлеСистем класе за руковање новим типом честице. Тхе адд_партицле() метода сада узима додатну боја параметар и ствара честице са наведеном бојом.
# Класа честица
класаЧестица:
деф__у томе__(сам, к, и, боја):
селф.к = к
селф.и = и
селф.дк = рандом.униформ(-2, 2)
селф.ди = рандом.униформ(-2, 2)
селф.лифетиме = 30
селф.цолор = бојадефажурирање(сам):
селф.к += селф.дк
селф.и += селф.ди
себе.животни век -= 1дефцртати(сам, прозор):
позиција = (инт (селф.к), инт (селф.и))
пигаме.драв.цирцле (прозор, селф.цолор, поситион, 3)# Класа система честица
класаПартицлеСистем:
деф__у томе__(сам):
селф.партицлес = []дефадд_партицле(сам, к, и, боја):
селф.партицлес.аппенд (честица (к, и, боја)дефажурирање(сам):
за честица ин селф.партицлес:
партицле.упдате()ако честица.животни век <= 0:
селф.партицлес.ремове (партиц)
дефцртати(сам, прозор):
за честица ин селф.партицлес:
партицле.драв (прозор)
Да бисте интегрисали ефекат експлозије у своју игру, потребно је да направите неколико модификација главне петље игре. Направите ново име датотеке схоот-партицле.пи и додајте код са ажурирањима у наставку:
# Креирајте систем честица
партицле_систем = ПартицлеСистем()# Главна петља игре
трчање = Истина
сат = пигаме.тиме. сат()док трчање:
дт = цлоцк.тицк(60) / 1000.0за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсекључеви = пигаме.кеи.гет_прессед()
граница = плаиер_к < виндов_видтх - плаиер_видтхако кључеви [пигаме. К_ЛЕФТ] и плаиер_к > 0:
плаиер_к -= 5ако кључеви [пигаме. К_ДЕСНО] и граница:
плаиер_к += 5ако кључеви [пигаме. К_СПАЦЕ]:
буллет_к = плаиер_к + плаиер_видтх // 2
буллет_и = плаиер_и
партицле_систем.адд_партицле (буллет_к, буллет_и, РЕД)партицле_систем.упдате()
виндов.филл (ЦРНИ)
плаиер_пос = (плаиер_к, плаиер_и, плаиер_видтх, плаиер_хеигхт)
пигаме.драв.рецт (прозор, ВХИТЕ, плаиер_пос)
партицле_систем.драв (прозор)пигаме.дисплаи.флип()
# Прекините игру
пигаме.куит()
Ево излаза:
Када размакница ( пигаме. К_СПАЦЕ) се притисне, додајте честицу систему честица на месту метка. Ово ствара ефекат експлозије са црвеним честицама.
Ефекат прашине
Последње визуелно побољшање које можете да примените је ефекат прашњаве позадине. Ефекат прашине ће се састојати од малих сивих честица које се крећу кружно, стварајући динамичну и прашњаву позадину.
Ажурирајте Честица разред укључити ан угао и брзина за сваку честицу. Угао одређује правац кретања, а брзина контролише брзину кретања честица у свом кружном узорку. Модифи тхе ажурирање() метод за ажурирање положаја сваке честице на основу њеног угла и брзине.
Такође, ажурирајте ПартицлеСистем класе за руковање новим понашањем честица. Честице се сада крећу кружно у оквиру прозора игре.
# Класа честица
класаЧестица:
деф__у томе__(сам, к, и, полупречник):
селф.к = к
селф.и = и
селф.радиус = радијус
селф.англе = рандом.униформ(0, 2 * матх.пи)
селф.спеед = рандом.униформ(0.5, 1.5)дефажурирање(сам):
само.угао += 0.02
селф.к += матх.цос (селф.угао) * селф.спеед
селф.и += матх.син (селф.угао) * селф.спеедако селф.к < 0:
селф.к = ширина_прозора
елиф селф.к > ширина_прозора:
селф.к = 0ако селф.и < 0:
селф.и = виндов_хеигхт
елиф селф.и > виндов_хеигхт:
селф.и = 0дефцртати(сам, прозор):
боја = (128, 128, 128)
пос = (инт (селф.к), инт (селф.и))
радијус = инт (селф. радијус)
пигаме.драв.цирцле (прозор, боја, поз, радијус)# Класа система честица
класаПартицлеСистем:
деф__у томе__(сам):
селф.партицлес = []дефадд_партицле(сам, к, и, полупречник):
селф.партицлес.аппенд (честица (к, и, радијус))дефажурирање(сам):
за честица ин селф.партицлес:
партицле.упдате()
дефцртати(сам, прозор):
за честица ин селф.партицлес:
партицле.драв (прозор)
Да бисте интегрисали ефекат прашине у своју игру, потребно је да направите неколико модификација главне петље игре. Креирајте нову датотеку под називом честица прашине.пи и додајте код са ажурирањима у наставку:
# Креирајте систем честица за ефекат прашине
партицле_систем = ПартицлеСистем()# Главна петља игре
трчање = Истина
сат = пигаме.тиме. сат()док трчање:
дт = цлоцк.тицк(60) / 1000.0за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсепартицле_к = рандом.рандинт(0, ширина_прозора)
партицле_и = рандом.рандинт(0, висина_прозора)партицле_систем.адд_партицле (партицле_к, партицле_и, 1)
партицле_систем.упдате()
виндов.филл((0, 0, 0))
партицле_систем.драв (прозор)пигаме.дисплаи.флип()
# Прекините игру
пигаме.куит()
Додајте честице насумично кроз прозор игре користећи рандом.рандинт() функција. Свака честица има почетни радијус од 1. Ажурирајте и нацртајте систем честица на прозору игре, стварајући динамичан и прашњав ефекат позадине.
Требало би да видите много честица на екрану, које се крећу насумично, али глатко:
Најбоље праксе за специјалне ефекте
Када додајете специјалне ефекте у своју Пигаме игру, размотрите следеће најбоље праксе:
Оптимизација перформанси
Системи честица могу укључивати велики број честица, што може утицати на перформансе игре. Примените технике попут просторног партиционисања (нпр. Куадтрее) да бисте оптимизовали ажурирање честица и цртање.
Рециклажа честица
Уместо стварања и уништавања честица у сваком оквиру, размислите о поновном коришћењу честица тако што ћете ресетовати њихова својства када дођу до краја свог животног века. Ово помаже да се минимизира додељивање и ослобађање меморије.
Партицле Поолинг
Одржавајте скуп унапред додељених честица да бисте избегли трошкове креирања нових инстанци током времена рада. Ово може побољшати перформансе и смањити фрагментацију меморије.
Ограничите број честица
Да бисте спречили системе честица да преплаве екран игре, поставите ограничења за максималан број честица и уклоните честице када достигну ову границу. Ово осигурава да ефекти остану визуелно привлачни без ометања играња.
Визуелна доследност
Одржавајте доследан визуелни стил током игре, укључујући ефекте честица. Уверите се да су боје, величине и обрасци кретања честица кохерентни са укупном темом и уметничким стилом.
Звучни ефекти
Додајте звучне ефекте да допуни своје ефекте честица. На пример, репродукујте звуке експлозије када се појави ефекат експлозије или звукове амбијента када су активни ефекти магле или прашине.
Учините игре забавнијим уз специјалне ефекте
Додавање специјалних ефеката, као што су системи честица, вашим Пигаме играма може значајно побољшати искуство играча и учинити ваше игре занимљивијим и забавнијим за играче. Применом ефеката честица као што су трагови, експлозије, магла и прашина, можете креирати визуелно запањујуће и динамично окружење.
Не заборавите да размислите о оптимизацији перформанси, рециклирању честица и визуелној доследности док уграђујете специјалне ефекте у своје игре. Уз креативност и експериментисање, можете своје Пигаме игре подићи на виши ниво и очарати играче импресивним и узбудљивим искуствима.