実は花火の元となる画像はこんなに汚いです
b5f06338.png
 

これを何枚も加算合成して、光ってる感じを出させてます。


さて、次は花火の「軌道」を確認します。


最初花火の玉が爆発して、放射状に↑の画像(以後パーティクルと呼ぶ)がとびちります。

そのあと、重力の影響を受けながら薄く消えていきます。

好きな人は、空気抵抗とかもお好みでつけたりします。


このプログラムに特殊な命令は必要ありません。全部四則演算で事足ります。


まず用意しなければいけないのは、配列変数です。


しかし、ただの配列ではなくて2次の配列です


今回はx成分、y成分、薄さの値など要素が多いので、1次だと少し不便です(できなくはないが)


dim par,100,5


と、100×5の2次の配列をつくります。


parは花火のパーティクル100個の座標などさまざまなパラメーターを代入する変数です。


X座標、Y座標、Xの速度、Yの速度、寿命。

この5つのパラメーターを2次の配列に記憶させます。


たとえば

par.12.1

と言ったら、花火の12番目のパーティクルのY座標の値のことを意味します


寿命の項目には、花火生成のときあと何フレームで消えるかの数値を入れておいて、まいフレームごとに

値を1ずつ減らしていきます。0になったら、パーティクル消滅とさせます。

(当然変数字体は消滅しないので、描画命令を読ませないプログラムにしろ、ということです)


花火生成プログラムですが、火薬玉爆発の瞬間は花火のパーティクルの位置は同じなので、同じ値を代入しておきます。


そして放射状に吹き飛ぶようにしたいので、速度のパラメーターのところに、それぞればらばらな値を入れておけばいいんです。


repeat 100

rad=3.1415*rnd(100)*0.02

par.cnt.2=10.0*cos(rad)

par.cnt.3=10.0*sin(rad)

loop


これでパーティクルの初期設定は完了。


あとは毎フレームごとにX座標、Y座標にXの速度、Yの速度を加算していけばいいだけです。


par.cnt.0=par.cnt.0+par.cnt.2

par.cnt.1=par.cnt.1+par.cnt.3


という操作です。


しかしこれでは飛び散ってしまう一方なので

ここで、重力の概念をプログラム化します。


重力は下に働くのでYの速度を毎フレームごとに1とか2プラスしてあげれば

パーティクルの動きが放物線になります。


par.cnt.3+=2


最後に寿命ですが

加算合成の合成%をgmodeで指定するとき、寿命の数値が小さくなればなるほど合成%も小さくなるように

指定します。


そうすれば、花火の先が徐々に薄くなっていくプログラムも完成です。



次回:  不明・・・