Ես վաղուց օգտագործում եմ pyglet և ինձ շատ է դուր գալիս: Ես ունեմ մի բան, որը կցանկանայի անել, բայց մինչ այժմ չեմ կարողացել անել:
Ես աշխատում եմ 2D դերակատարման խաղի վրա և կցանկանայի, որ կերպարները կարողանայի տարբեր տեսք ունենալ, այսինքն՝ ես չէի ցանկանա օգտագործել ամբողջովին նախապես պատրաստված սփրայթեր, բայց փոխարենը կցանկանայի, որ լիներ մի շարք , ասենք, սանրվածքներ և սարքավորումներ, որոնք տեսանելի են խաղի հերոսների վրա:
Այսպիսով, այս բանն աշխատեցնելու համար, ես մտածեցի, որ դրա մասին շարունակելու ամենախելամիտ ձևը կլինի pyglet.image.Texture.create()-ի միջոցով հյուսվածք ստեղծելը և այդ հյուսվածքի վրա ճիշտ սփրայթի սկզբնաղբյուր պատկերները ջնջելը՝ օգտագործելով Texture.blit_into: Օրինակ՝ ես կարող էի մերկ մարդու պատկերը շողոքորթել հյուսվածքի վրա, ապա դրա վրա մազի հյուսվածքը և այլն:
human_base = pyglet.image.load('x/human_base.png').get_image_data()
hair_style = pyglet.image.load('x/human_hair1.png').get_image_data()
texture = pyglet.image.Texture.create(width=human_base.width,height=human_base.height)
texture.blit_into(human_base, x=0, y=0, z=0)
texture.blit_into(hair_style, x=0, y=0, z=1)
sprite = pyglet.sprite.Sprite(img=texture, x=0, y=0, batch=my_sprite_batch)
Խնդիրն այն է, որ երկրորդ պատկերը հյուսվածքի մեջ փչացնելը «վերագրում է» արդեն փչացած հյուսվածքը: Թեև երկու պատկերներն էլ ունեն ալֆա ալիք, ստորև (human_base) պատկերը չի երևում այն բանից հետո, երբ hair_style-ը կպչում է դրա վրա:
Սա ընթերցողներից մեկը կարող է մտածել, թե ինչու դա այդպես վարվի, ասենք, երկու տարբեր pyglet.sprite.Sprite օբյեկտներ ստեղծելու փոխարեն, մեկը human_base-ի և մյուսը hair_style-ի համար և պարզապես տեղափոխեք դրանք միասին: Մի բան է վիճակահանության դասավորությունը. խաղը հիմնված է սալիկների վրա և իզոմետրիկ է, ուստի տեսանելի օբյեկտի տեսակավորումը, որը բաղկացած է տարբեր շերտերով (կամ դասավորված խմբերից, ինչպես դրանք անվանում է պիգլետը) բաղկացած է տարբեր շերտերով, մեծ ցավ կլինի:
Այսպիսով, իմ հարցն այն է, արդյոք կա ալֆան պահպանելու միջոց, երբ օգտագործում եք blit_into pyglet-ի հետ: Եթե դա անելու ոչ մի միջոց չկա, խնդրում եմ, այս մասին շարունակելու այլընտրանքային ուղիների ցանկացած առաջարկ շատ գնահատելի կլինի: