我一直在使用pyglet一段時間,我非常喜歡它。然而,我有一件事想做,但迄今爲止還做不到。Pyglet:blit_into紋理和alpha
我正在製作一個2D角色扮演遊戲,我希望角色能夠看起來不同 - 也就是說,我不喜歡使用完全預構造的小精靈,但是我想要那裏可以說是一系列髮型和裝備,可以在遊戲中的角色上看到。所以爲了讓這件事情起作用,我認爲關於它的最明智的方法是用pyglet.image.Texture.create()創建一個紋理,並使用Texture在該紋理上blit正確的精靈源圖像.blit_into。例如,我可以的blit紋理上的裸體人體圖像,然後對的blit一個頭發紋理等
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)
的問題是塊傳輸的第二圖像到紋理「覆蓋」在已經位圖混合紋理。儘管這兩個圖像都有一個alpha通道,但在hair_style在blit之後,下面的圖像(human_base)不可見。
一個讀者可能想知道爲什麼要這樣做,而不是創建兩個不同的pyglet.sprite.Sprite對象,一個用於human_base,另一個用於hair_style並將它們移動到一起。有一件事是繪製順序:遊戲是基於圖塊和等距的,所以對由多個不同圖層組成的可見對象(如pyglet稱之爲有序組)進行排序會是一大痛苦。
所以我的問題是,是否有一種方法來保留alpha時使用blit_into與pyglet。如果沒有辦法做到這一點,請對任何有關此方法的建議感到非常感激!