3

Pygameを使って2Dゲームを作っています。
作業中のゲームにパーティクルエフェクトを追加したいと思います。スポーンスモーク、ファイア、ブラッドなどをやりたいです。これを行う簡単な方法はありますか?どこから始めたらいいのかわからない。
拡張できるベースケースが必要です
。Plsヘルプ。

4

2 に答える 2

3

煙が更新されるたびに、上に移動してランダムに右または左に移動するrectで構成されるクラスを作成することをお勧めします。次に、必要なときにいつでもそれらを大量に作成します。以下のサンプルコードを作成しようとしますが、それが機能することを保証することはできません。他のパーティクルエフェクトについても同様のクラスを作成できます。

class classsmoke(pygame.Rect):
    'classsmoke(location)'
    def __init__(self, location):
        self.width=1
        self.height=1
        self.center=location
    def update(self):
        self.centery-=3#You might want to increase or decrease this
        self.centerx+=random.randint(-2, 2)#You might want to raise or lower this as well

#use this to create smoke
smoke=[]
for i in range(20):
    smoke.append(classsmoke(insert location here))
#put this somewhere within your game loop
for i in smoke:
    i.update()
    if i.centery<0:
        smoke.remove(i)
    else:
        pygame.draw.rect(screen, GREY, i)

もう1つのオプションは、次のようにクラスをタプルにすることです。

class classsmoke():
    'classsmoke(location)'
    def __init__(self, location):
        self.center=location
    def update(self):
        self.center[1]-=3
        self.center[0]+=random.randint(-2, 2)

#to create smoke
smoke=[]
for i in range(20):
    smoke.append(classsmoke(insert location here))
#put inside game loop
for i in smoke:
    i.update()
    if i.centery<0:
        smoke.remove(i)
    else:
        pygame.draw.rect(screen, GREY, (i.center[0], i.center[1], 1, 1))

または、クラスを完全に回避するには、次のようにします。

#to create smoke:
smoke=[]
for i in range(20):
    smoke.append(insert location here)
#put within your game loop
for i in smoke:
    i[1]-=3
    i[0]+=random.randint(-2, 2)
    if i[1]<0:
        smoke.remove(i)
    else:
        pygame.draw.rect(screen, GREY, (i[0], i[1], 1, 1))

好みを選択し、他のパーティクルエフェクトについても同様のことを行います。

于 2013-02-12T15:15:53.603 に答える
1

ライブラリでパーティクルエフェクトを確認してくださいPyIgnition

http://www.pygame.org/shots/1527.jpg

于 2013-02-12T18:39:59.880 に答える